角度表单验证失败,引起了一些问题?

时间:2019-10-17 03:29:50

标签: angular forms angular2-form-validation

我有此表单或formarray和书本模型:

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'。然后单击其他名称字段,则无法编辑其他名称字段。这似乎很合理,但是我只是不需要它。

1 个答案:

答案 0 :(得分:0)

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

要获取自定义错误,您需要放置验证器。参见here