angular material 中form表單提交時賦值,無法觸發input輸入框的樣式,使用給FormGroup賦值的方式
onSubmit() { Object.values(this.formGroup.controls).forEach(i=>{ i.marksAsDirty(); }) this.formGroup.patchValue(this.formGroup.getRowValue()) if(this.formGroup.invalid){ return; } }
// 需要在app.module.ts 中添加
import { errorStateMatcher, showOnDirtyErrorStateMatcher } from '@angular/material' providers: [ { provide: errorStateMatcher, useClass: showOnDirtyErrorStateMatcher } ],
-------------------------------------------------------------------------------------------------------
對於單個的formControl的操作賦值觸發校驗的情況下,可以使用如下方式:
this.formControl.setValue(''); // 只有此行可以觸發FormControl的invalid是true,但是結合material 的mat-form-field無法觸發<mat-error>的錯誤顯示 this.formControl.markAsDirty(); this.formControl.updateValueAndValidity();
// 這兩行等價於上面formGroup的賦值校驗