0

我有这个表格或表格数组和书籍模型:

class Book {
  id: number;
  active: boolean;
  name: string;
}
bookForm: FormGroup;

results: Book[];

ngOnInit() {
  this.results = [
    {id: 1, active: true, name: aaa},
    {id: 2, active: true, name: bbb},
    {id: 3, active: true, name: ccc},
  ];

  this.bookForm = this.fb.group({
    bookArray: this.fb.array(results.map(res => this.fb.group({
      id: [res.id],
      active: [res.active],
      name: [res.name, {
        validators: [BookValidators.required(`name`)],
        asyncValidators: [BookValidators.unique(`name`, (value: string) => {
              return this.service.checkNameUnique(value, res.id);
        })],
        updateOn: 'blur'
      }]
    })))
  });
}

所以我用现有结果启动 formArray 并显示这个 formArray 表

id   active   name
1     true    aaa
2     true    bbb
3     true    ccc 

在此表中,名称列是可编辑的。当我编辑'aaa''bbb'时,表单验证显然会失败,因为它具有唯一的验证updateOn: 'blur'。问题是:如果我保持这个变化:'aaa' -> 'bbb'。然后单击其他名称字段,其他名称字段无法编辑。这似乎是合理的,但我只是不需要它。

4

1 回答 1

0

如果您保留更改aaa -> bbb,其他字段将被禁用。Angular 本身不会这样做,您必须有一些代码来禁用其他字段。发布一些 HTML 以向我们提供更多信息。

要获取自定义错误,您需要放置验证器。看这里

于 2019-10-17T03:51:56.390 回答