使用 errorStateMatcher 作为指令
Use errorStateMatcher as directive
我有简单的 material 输入,对于该输入,我使用 material errorStateMatcher
这有助于我动态显示 mat-error 而不是在输入模糊上。
<input matInput
[errorStateMatcher]="matcher"/>
和组件内部:
export class MyErrorStateMatcher implements ErrorStateMatcher {
isErrorState(control: FormControl | null, form: FormGroupDirective | NgForm | null): boolean {
return !!(control && control.invalid && (control.dirty || control.touched));
}
}
matcher = new MyErrorStateMatcher();
是否可以将 errorStateMatcher
作为指令 errorStateMatcherDirective
并且不要在每个控制器中使用 MyErrorStateMatcher class 而是像这样使用它:
<input matInput
errorStateMatcherDirective/>
一种解决方案,可让您控制要将哪个 MatInput
和哪个 ErrorStateMatcher
传递给 ErrorStateMatcherDirective
:
@Directive({
selector: '[errorStateMatcherDirective]'
})
export class ErrorStateMatcherDirective {
@Input() input: MatInput;
@Input() matcher: ErrorStateMatcher;
constructor() {
this.input._defaultErrorStateMatcher = this.matcher;
}
}
<input matInput errorStateMatcherDirective #matInput="matInput" [input]="matInput" [matcher]="matcher"/>
我有简单的 material 输入,对于该输入,我使用 material errorStateMatcher
这有助于我动态显示 mat-error 而不是在输入模糊上。
<input matInput
[errorStateMatcher]="matcher"/>
和组件内部:
export class MyErrorStateMatcher implements ErrorStateMatcher {
isErrorState(control: FormControl | null, form: FormGroupDirective | NgForm | null): boolean {
return !!(control && control.invalid && (control.dirty || control.touched));
}
}
matcher = new MyErrorStateMatcher();
是否可以将 errorStateMatcher
作为指令 errorStateMatcherDirective
并且不要在每个控制器中使用 MyErrorStateMatcher class 而是像这样使用它:
<input matInput
errorStateMatcherDirective/>
一种解决方案,可让您控制要将哪个 MatInput
和哪个 ErrorStateMatcher
传递给 ErrorStateMatcherDirective
:
@Directive({
selector: '[errorStateMatcherDirective]'
})
export class ErrorStateMatcherDirective {
@Input() input: MatInput;
@Input() matcher: ErrorStateMatcher;
constructor() {
this.input._defaultErrorStateMatcher = this.matcher;
}
}
<input matInput errorStateMatcherDirective #matInput="matInput" [input]="matInput" [matcher]="matcher"/>