我不想要这个。因为我要异步验证FormArray
的每个元素,所以我希望验证器仅在必要时运行(即,当将它们添加到控件的值真正改变时)。我也发现这种行为很奇怪,因为FormArray
的值更改时,验证器仅在添加新元素时才会执行。
复制:https://stackblitz.com/edit/angular-reactive-forms-tkdu1n?file=app%2Fapp.component.ts
任何帮助将不胜感激
答案 0 :(得分:1)
当新的FormArray
被推入其中时,FormControl
会为每个嵌套的FormControl
执行验证程序,而与此无关...
因此,我分叉了您的堆叠闪电,并创建了一个带有闭包的有状态验证器,并且成功了。
希望这会有所帮助!
答案 1 :(得分:0)
是的,只需更改
return Observable.of(null).delay(1000);
到
return Observable.of(null).delay(0);
当您使延迟1000毫秒时,您也会禁用并阻止其他实例(或值)的状态的可达性,但是,当您使延迟为0时,它不会处理其他实例,而只是检查当前实例。
希望有帮助!