添加新元素时,Angular更新现有FormArray元素的有效性

时间:2018-07-03 12:24:47

标签: angular typescript angular2-forms angular-reactive-forms angular-forms

我不想要这个。因为我要异步验证FormArray的每个元素,所以我希望验证器仅在必要时运行(即,当将它们添加到控件的值真正改变时)。我也发现这种行为很奇怪,因为FormArray的值更改时,验证器仅在添加新元素时才会执行。

复制:https://stackblitz.com/edit/angular-reactive-forms-tkdu1n?file=app%2Fapp.component.ts

任何帮助将不胜感激

2 个答案:

答案 0 :(得分:1)

当新的FormArray被推入其中时,FormControl会为每个嵌套的FormControl执行验证程序,而与此无关...

因此,我分叉了您的堆叠闪电,并创建了一个带有闭包的有状态验证器,并且成功了。

Forked Stackblitz

希望这会有所帮助!

答案 1 :(得分:0)

是的,只需更改

return Observable.of(null).delay(1000);

return Observable.of(null).delay(0);

当您使延迟1000毫秒时,您也会禁用并阻止其他实例(或值)的状态的可达性,但是,当您使延迟为0时,它不会处理其他实例,而只是检查当前实例。

希望有帮助!