我有一个自定义验证服务,可以在表单中使用,以防一个输入依赖于另一个输入
this.myForm = new FormGroup(group, [ServiceValidator.customValidator]);
验证器看起来与此类似:
static customValidator(g: FormGroup) {
this._unsubscriber$ = new Subject<boolean>();
g.controls['myControl'].valueChanges.pipe(takeUntil(this._unsubscriber$)).subscribe(values => {
// Logic here
if (this._unsubscriber$) {
this._unsubscriber$.next(true);
this._unsubscriber$.unsubscribe();
}
});
}
我注意到,如果我多次将值更改为myControl
输入,尽管我尝试退订,但它开始变得越来越慢。当我开始使用takeUntil时,我开始出现此错误。
我的ServiceValidator
不是角度分量,因此我不能使用ngOnDestroy。
另外,只要更改表单中的值,就会调用customValidator
。
我在做什么错? 如何安全退订?
答案 0 :(得分:2)
请记住,您不可以使用
free()
但是
this._unsubscriber$.next(true);
this._unsubscriber$.unsubscribe();