Angular:“注射器已被摧毁。”

问题描述 投票:0回答:1

带有表单的 Angular 应用程序突然开始报告此错误:

运行时错误:NG0205:注射器已被破坏。

如何找到罪魁祸首?

angular rxjs angular-reactive-forms
1个回答
0
投票

在我的特殊情况下,带有

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
            ),
    ]}),
  });
© www.soinside.com 2019 - 2024. All rights reserved.