带有表单的 Angular 应用程序突然开始报告此错误:
运行时错误:NG0205:注射器已被破坏。
如何找到罪魁祸首?
在我的特殊情况下,带有
asyncValidators
的表单是罪魁祸首:Angular 没有正确取消订阅使用 rxjs.share()
的热门可观察对象。
来自
ngneat/until-destroy的
untilDestroyed(this)
在这里有所帮助:
/** The form: select the filling device
*/
form = new FormGroup({
field: new FormControl<number>(0, {
nonNullable: true,
validators: [Validators.required, Validators.min(1) ],
asyncValidators: [
(control: AbstractControl): rx.Observable<ValidationErrors | null> => this.observable$.pipe(
rx.take(1), // complete observable immediately
//...
untilDestroyed(this), // the solution
),
]}),
});