【发布时间】:2018-02-18 17:19:47
【问题描述】:
我正在动态生成一个表单,我需要根据模型命名我的控件。
我正在使用 Angular 5 和 Angular-Material 5。
但是,由于出现以下错误,我无法动态命名日期选择器 (Mat-DatePicker)。
InstrumentSearchComponent.html:27 错误类型错误: this._datepicker._registerInput 不是函数
这就是我尝试使用导致上述错误的动态名称创建控件的方式。
<mat-form-field>
<input matInput [matDatepicker]="dynamicName" placeholder="{{ dynamicLabel }}">
<mat-datepicker-toggle matSuffix [for]="dynamicName"></mat-datepicker-toggle>
<mat-datepicker #{{dynamicName}}></mat-datepicker>
</mat-form-field>
dynamicName 和 dynamicLabel 在关联的 TS 文件中定义,并且来自我为字段定义的模型。
如果我删除动态名称并将它们全部替换为静态名称,例如 datePicker1 或 picker1,那么一切正常,但我正在努力组合静态命名控件并将其绑定到我的模型。
有效的静态命名控件示例。
<mat-form-field>
<input matInput [matDatepicker]="picker" placeholder="{{ dynamicLabel }}">
<mat-datepicker-toggle matSuffix [for]="picker"></mat-datepicker-toggle>
<mat-datepicker #picker></mat-datepicker>
</mat-form-field>
大家有什么建议吗?谢谢
【问题讨论】:
-
为什么不使用
id(id="{{dynamicName}}") 而不是模板变量 (#picker)?您可以很容易地获得对具有 id 的组件的引用。 -
谢谢理查德;我最终在关联的输入字段上使用了 formControlName 。我的搜索表单上只有一个日期时间字段,所以我可以忍受。但是当我将有 2 个或更多日期控件时,我将不得不找到一种方法来命名两个日期选择器彼此不同:) 谢谢好友
标签: angular datepicker angular-material