Angular Material MatChipList MatError 在没有焦点的情况下设置错误状态时不可见
Angular Material MatChipList MatError not visible when setting errorstate without focus
我在芯片列表上显示垫错误时遇到了一些问题。根据 this GitHub issue 应明确设置 errorState
以显示垫错误。
此解决方案工作正常,但仅当芯片列表具有焦点时。当 chiplist 未被聚焦时,它不起作用。参见 this example。在我的例子中,当芯片列表没有焦点时,由于一些 API 调用,有效水果列表稍后会发生变化。
chiplist无焦点时如何显示mat-error?
您应该添加验证器并防止添加无效项,如下所示。
例如:
组件:
export class ExampleComponent {
items = [];
emailFormControl = new FormControl('', [Validators.email]);
addItem(event) {
if (this.emailFormControl.valid) {
items.push(event.value)
}
}
.
.
.
}
模板:
<mat-form-field>
<mat-chip-list [formControl]="emailFormControl">
.
.
.
</mat-chip-list>
</mat-form-field>
设置 errorState
似乎没有焦点,由占位符和下划线转向 red
指示。
我怀疑您也需要 mat-error
才能显示,但是,您缺少 *ngIf
。
<mat-error *ngIf="chipList.errorState">Too many chips</mat-error>
STACKBLITZ
我在芯片列表上显示垫错误时遇到了一些问题。根据 this GitHub issue 应明确设置 errorState
以显示垫错误。
此解决方案工作正常,但仅当芯片列表具有焦点时。当 chiplist 未被聚焦时,它不起作用。参见 this example。在我的例子中,当芯片列表没有焦点时,由于一些 API 调用,有效水果列表稍后会发生变化。
chiplist无焦点时如何显示mat-error?
您应该添加验证器并防止添加无效项,如下所示。 例如:
组件:
export class ExampleComponent {
items = [];
emailFormControl = new FormControl('', [Validators.email]);
addItem(event) {
if (this.emailFormControl.valid) {
items.push(event.value)
}
}
.
.
.
}
模板:
<mat-form-field>
<mat-chip-list [formControl]="emailFormControl">
.
.
.
</mat-chip-list>
</mat-form-field>
设置 errorState
似乎没有焦点,由占位符和下划线转向 red
指示。
我怀疑您也需要 mat-error
才能显示,但是,您缺少 *ngIf
。
<mat-error *ngIf="chipList.errorState">Too many chips</mat-error>
STACKBLITZ