我在应用中使用了棱角材质,因此我在选择框中使用了mat-form-field
mat-select
和mat-option
标签。
我为此创建了一个子组件并将其添加到父组件中。当我使用时:
<mat-form-field>
<mat-select ...>
<mat-option ...></option>
</mat-select>
</mat-form-field>
,然后将ngModel
传递给父级,则无法正常工作。关于绑定和ngModel
但是当我使用普通/经典select
时:
<select ...>
<option ....></option>
</select>
然后直接运行。
这两种情况都是StackBlitz Demo with the complete code。
任何想法都可能导致这种奇怪行为吗?
答案 0 :(得分:1)
您的示例抛出错误:
Error: Uncaught (in promise): Error: No value accessor for form control with name: 'Users'
我无法解释经典选择是如何工作的,但是该错误表明了MatSelect
不起作用的原因-您没有以某种形式正确使用ngModel
-您需要在ControlValueAccessor
中实现DataListComponent
。 ControlValueAccessor
实现负责在模型更改时更新表单-没有它,模型更改不会传播回表单。
MatSelect
(不使用select元素)有可能依赖于经典select所不依赖的东西,因此它不能以相同的方式起作用。