【问题标题】:MatDatepicker max attribute not working when setting value dynamicallyMatDatepicker max 属性在动态设置值时不起作用
【发布时间】:2019-06-02 20:35:25
【问题描述】:

我正在使用 Ionic v4 开发一个 Ionic-Angular 项目。我在 matdatepicker 的输入标签中尝试了最大属性。它在值为空白时工作。但是当我以编程方式在输入中设置值时,最大验证不起作用。我使用 ngModel、formcontrol 和 formcontrolname 设置值。但是每次 max attr 都不起作用。

<mat-form-field class="full-width">
            <input matInput [matDatepicker]="picker" readonly placeholder="Date Performed" [max]="todayDate" (click)="picker.open()"
            [formControl]="serializedDate" formControlName="selecteddate">
            <mat-datepicker-toggle matSuffix [for]="picker"></mat-datepicker-toggle>
            <mat-datepicker #picker></mat-datepicker>
          </mat-form-field>
let convetedDate = moment('1544466600000', "x").format("DD-MMM-YYYY");
    this.myDate = new Date(Date.parse(convetedDate));
    this.serializedDate = new FormControl(this.myDate);

【问题讨论】:

    标签: angular ionic-framework


    【解决方案1】:

    当您将todayDate 绑定为[max] 用于日期选择器时,您的todayDate 变量应该包含最大日期。不能使用 ngModel 或 formControl 设置它。 我使用您的示例创建了一个 stackblitz,其中我在逻辑中设置了 todayDate 变量,它按预期工作。 Here 希望这会有所帮助

    编辑: 在使用ngModel[formControl] 设置serializedDate 的值后,[max] 仍在工作。查看更新的 stackblitz here

    我认为您无法在日期选择器中看到最大值的原因是您为日期控件设置的日期是 2018 年 12 月 10 日,而 max 设置为今天的日期。因此,尝试导航到当前月份,您将在今天的日期之后看到禁用的日期,就像在 stackblizt 中一样。

    【讨论】:

    • 感谢您的回答。我可能忘记在上面的代码 sn-p 中添加this.todayDate=new Date();。但它在那里。如果 datepicker 中没有值,则代码正在工作。当我为日期选择器设置值时它不起作用。您是否尝试过设置它的值serializedDateselecteddate
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-01
    • 2011-10-28
    • 1970-01-01
    • 2012-10-16
    • 1970-01-01
    • 1970-01-01
    • 2013-09-14
    相关资源
    最近更新 更多