Angular 角材质以编程方式触发接触状态
我使用的是Angular 4反应形式和Angular 角材质以编程方式触发接触状态,angular,angular-material2,Angular,Angular Material2,我使用的是Angular 4反应形式和@Angular/material版本2.0.0-beta.10。我需要以编程方式显示md error消息 在必填字段上,当用户在没有输入任何文本的情况下离开输入时,我有一个md错误,表示“此字段为必填字段”。请参阅代码: <md-form-field> <input mdInput type="text" formControlName="PartNumber" placeholder=
@Angular/material
版本2.0.0-beta.10
。我需要以编程方式显示md error
消息
在必填字段上,当用户在没有输入任何文本的情况下离开输入时,我有一个md错误
,表示“此字段为必填字段”。请参阅代码:
<md-form-field>
<input mdInput type="text"
formControlName="PartNumber"
placeholder="Part Number"
maxlength="250"
required />
<md-error *ngIf="formGroup.controls['PartNumber'].hasError('required')">
Part Number is <strong>required</strong>
</md-error>
</md-form-field>
调用markAsTouched()
或markAsDirty()
时,
下面的md错误文本不会出现
如何以编程方式触发触摸状态以显示错误消息?解决方案是循环遍历每个控件并将每个控件标记为触摸:
Object.keys(this.formGroup.controls).forEach(key => {
const ctrl = this.formGroup.get(key);
ctrl.markAsTouched({ onlySelf: true });
});
一个更好的解决方案可能是使用
下面是一个使用类属性决定何时显示错误的示例:
Object.keys(this.formGroup.controls).forEach(key => {
const ctrl = this.formGroup.get(key);
ctrl.markAsTouched({ onlySelf: true });
});
<md-form-field>
<input mdInput [formControl]="myInput" placeholder="My Input" [errorStateMatcher]="showWhenISayTo">
<md-error>Field is required</md-error>
</md-form-field>
// Set this to `true` to show the errors
showError = false;
myInput = new FormControl('', Validators.required)
showWhenISayTo = () => {
return this.showError;
}
import {MD_ERROR_GLOBAL_OPTIONS, showOnDirtyErrorStateMatcher} from '@angular/material';
@NgModule({
providers: [
{provide: MD_ERROR_GLOBAL_OPTIONS, useValue: {errorStateMatcher: showOnDirtyErrorStateMatcher}}
]
})