首页 > 解决方案 > 无法使用没有验证标签的 Angular Moment Picker 设置初始自定义日期

问题描述

我正在使用 Angular Moment Picker 库并尝试在输入字段中设置自定义日期,同时还试图阻止用户选择过去的日期。

我的元素看起来像这样:

<input class="form-control"
    moment-picker="endTimePicker"
    name="campaignEndDate"
    locale="en"
    format="MMMM Do YYYY, h:mm A"
    today="true"
    start-view="month"
    min-date="minDate"
    ng-model="endTime"
    ng-model-options="{ updateOn: 'blur' }"
    ng-required="!campaign.NeverEnds"
    style="width: 60%;"/>

我的控制器:

$scope.minDate = moment();
$scope.endTime = moment( $scope.campaign.EndTime );

当我打开表单时,Angular Moment Picker 在输入字段中显示今天的日期/时间,即使$scope.endTime显示的是过去的日期。

在此处输入图像描述

我似乎可以在输入字段中显示正确日期的唯一方法是validate="false"在元素上设置,但是控件没有通过验证,因为日期是过去的日期。

我想要实现的是(2020-07-29 02:14:00)在用户打开表单时显示初始日期,但如果他们尝试更改endTime,则无法选择过去的新日期。

这是否可以以某种方式实现?

标签: angularjsangular-moment-picker

解决方案


好的,在玩了更多之后,并回顾了文档,我发现实现我想要的最佳方法是实现一个selectable方法:

角矩选择器#methods

我删除了min-date="minDate"允许 Moment Picker 然后在输入字段中显示正确日期的选项,然后将 a 添加selectable="isSelectable( date )"到元素中以过滤并禁用任何前几天:

$scope.isSelectable = function( date ) {

    // Disable all previous days
    return date >= moment();

};

推荐阅读