提问者:小点点

角度材质和输入类型“时间”,值属性与ngModel


我正在尝试将传入日期对象拆分为两个单独的mat form字段。

首先,我创建DatePicker并为其提供正确的默认值:

<mat-form-field>
    <mat-label>Datum laden: </mat-label>
    <input matInput [matDatepicker]="loadPicker" placeholder="Choose a date" [(ngModel)]="data.mission.loadDate">
    <mat-datepicker-toggle matSuffix [for]="loadPicker"></mat-datepicker-toggle>
    <mat-datepicker #loadPicker></mat-datepicker>
</mat-form-field>

当我谈到时间元素时,它变得有点棘手。棱角材料似乎没有处理时间的方法。这意味着我必须回到旧方法,只需给我的输入字段type=“time”。从视觉上看,它是有效的,给它一个值,但是在使用value属性时似乎不起作用。

有人能给我解释一下为什么使用ngModel有效而另一种方法无效吗?

工作版本:

<mat-form-field>
    <mat-label>Tijd laden: </mat-label>
    <input matInput type="time" [(ngModel)]="test">
</mat-form-field>

测试结果如下:

test = `${this.mission.loadDate.getHours()}:${this.mission.loadDate.getMinutes()}`;

非工作版本:

<mat-form-field>
            <mat-label>Tijd laden: </mat-label>
            <input matInput type="time" value=`${data.mission.loadDate.getHours()}:${data.mission.loadDate.getMinutes()}`>
</mat-form-field>

考虑type=“time”由浏览器处理。我认为这两种方法都应该有效。


共1个答案

匿名用户

实际上,value是一个HTML属性,要绑定HTML属性,需要使用表达式绑定。虽然[value]是一个不需要表达式绑定的DOM属性,但在另一方面,您不需要使用getHours和getMinutes。您可以使用angular提供的日期过滤器。看看这个例子