我有此表单或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'
。然后单击其他名称字段,则无法编辑其他名称字段。这似乎很合理,但是我只是不需要它。
答案 0 :(得分:0)
如果保留更改aaa -> bbb
,则会禁用其他字段。 Angular本身不会这样做,您必须具有一些代码才能禁用其他字段。发布一些HTML以向我们提供更多信息。
要获取自定义错误,您需要放置验证器。参见here