我正在尝试将传入日期对象拆分为两个单独的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”由浏览器处理。我认为这两种方法都应该有效。
实际上,value
是一个HTML属性,要绑定HTML属性,需要使用表达式绑定。虽然[value]
是一个不需要表达式绑定的DOM属性,但在另一方面,您不需要使用getHours和getMinutes。您可以使用angular提供的日期过滤器。看看这个例子