当前位置: 首页 > 知识库问答 >
问题:

输入不显示验证错误的角材料垫芯片列表

洪昊然
2023-03-14

我目前面临着一个奇怪的问题,即mat芯片列表和输入。我有一个表单组,它有两个表单控件:contacts和name。

this.form = this.formBuilder.group({
    name: ['', [Validators.required]],
    contactIds: ['', [Validators.required]]
})

此窗体的视图如下所示:

<mat-form-field #contactsChipList>
    <mat-chip-list>
        <mat-chip *ngFor="let contact of contacts" [removable]="removable" (remove)="removeChipListItem(contact)">
            {{ contact.name | titlecase }} {{ contact.surname | titlecase }}
        <mat-icon matChipRemove *ngIf="removable"></mat-icon>
        </mat-chip>
        <input [matChipInputFor]="contactsChipList" placeholder="Contacts" formControlName="contactIds" />
        <mat-error *ngIf="form.hasError('required', 'contactIds')">This field is required</mat-error>
    </mat-chip-list>
</mat-form-field>

问题:当我从输入字段中删除所有元素时,父窗体(formGroup)被标记为无效,但formGroup的错误属性不包含任何值。所以错误永远不会出现。

其他尝试:但当我使用一个正常的输入元素,该元素具有matInput属性,但没有mat芯片列表时,当我删除输入字段的内容时,错误会正确显示。

在这种情况下,标记看起来是这样的:

<div class="form-group">
    <mat-form-field>
        <input matInput placeholder="Contacts" formControlName="contactIds" />
        <mat-error *ngIf="form.hasError('required', 'contactIds')">This field is required</mat-error>
    </mat-form-field>
</div>

假设:我现在认为问题在于mat芯片列表元素。我试图研究:@Input()errorStateMatcher:errorStateMatcher,但我还不知道如何使用。谷歌对这种搜索并不友好。

有没有人经历过这个问题?如果你需要澄清,请告诉我。

共有1个答案

卫阳炎
2023-03-14

您应该在

组成部分:

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>
<mat-form-field>
    <mat-chip-list ngDefaultControl [formControl]="form.controls.contactIds">
        .
        .
        .
        <mat-error *ngIf="form.controls.contactIds.hasError('required', 'contactIds')">This field is required</mat-error>
    </mat-chip-list>
</mat-form-field>

 类似资料:
  • 我在使用角材料时遇到了一些问题,我尝试了很多解决方案,但都不起作用。这就是我想做的: 我正在使用带有反应形式的角材料制作一个表单,在我添加组件之前,一切都很好。这是我得到的 错误:mat form字段必须包含MatFormFieldControl。 这是我的代码: HTML: 组件: 模块: 我导入了模块以便Angular Material可以正常工作,实现了表单控件名称,但仍然得到了相同的。我尝

  • 我使用的是角材料6,我有一个值,当移动到正确显示的垫子误差后,垫子误差未显示。 不工作代码: 工作罚款: 有人解释了为什么在该控件内不起作用。 现场演示:stackblitz

  • Stackblitz示例链接 我正在使用角材料-垫-自动完成内部形式。我想显示红色高亮文本和边框颜色的输入字段&mat-matautoComplete输入错误消息时,表单无效。建议反应或模板驱动的形式将起作用

  • 我想突出显示点击的选定值的背景颜色。我正在演示这个例子,它突出显示了多个选择值。我想在单击以选择一个选项时只突出显示所选的值。

  • 我试着用angular-6中的angular材质 我的材料。单元ts是这样的 它正在给出错误 请帮帮我

  • 我正在使用angular 8.0.0,angular material和Fuse主题作为管理面板。问题是,每当我更改mat-select的样式时,它就会被应用,但在一两次刷新后,角度材质会覆盖本地组件更改并应用默认的。 它也会应用到所有组件,我如何才能只更改一个mat-select的样式? 我的html中有问题的部分: scss文件: } 尝试了stackoverflow的所有建议,但似乎无法改变