Angular mat错误不存在';不显示内垫形式字段
我在子组件中有mat select代码,我传递输入以显示和隐藏错误。下面是我的代码Angular mat错误不存在';不显示内垫形式字段,angular,angular-material,Angular,Angular Material,我在子组件中有mat select代码,我传递输入以显示和隐藏错误。下面是我的代码 <mat-form-field> <mat-select [formControl]="ctrl" [placeholder]="placeholder"> <mat-option *ngFor="let option of options" [value]="option">
<mat-form-field>
<mat-select [formControl]="ctrl" [placeholder]="placeholder">
<mat-option *ngFor="let option of options" [value]="option">
{{ option }}
</mat-option>
</mat-select>
<mat-error *ngIf="onError">Error: Required Field</mat-error>
</mat-form-field>
{{option}}
错误:必填字段
OneError是决定隐藏或显示mat错误的输入属性
下面是我如何调用mat select的
<my-select onError="true" [ctrl]="form.get('cities')" [options]="cities" placeholder="Cities"></my-select>
堆栈闪电战:
只需添加空选择,因为如果值为空,则会出现错误。除Aviby 2006s empty外,您还可以在模板中添加空选项,这样您的选项数组就可以保留空选项:
{{option}}
两件事:
1.-您忘记告诉您的组件select是一个[formControl]
<mat-select [formControl]="ctrl" [placeholder]="placeholder">
...
</mat-select>
...
2.-当您作为
[ctrl]
传递自己的formControl时,您不需要实现ControlValueAccessor(仅当您创建自定义表单控件时使用它-一个可以在ReactiveForm内部使用或与[(ngModel)]一起使用的“特殊组件”)作为一个普通的
-。我想说的是删除函数:writeValue,registerChange,如果将mat错误放在mat表单字段之外,而不是放在它里面,它就会工作。您不需要空字符串,只需单击任何选项。它会工作,但此验证是针对无效输入的选择,对吗?我会触发mArkaStuched方法,但如果它在mat中选择它们不起作用cities:['',Validators.required],
将在有空时抛出错误,因为我的链接已更新。问题是ng值访问不需要空选项或空字符串来使其起作用。只需单击选择框,不选择任何选项。
<mat-select [formControl]="ctrl" [placeholder]="placeholder">
...
</mat-select>