4

FormControl とその値の変更に関するサブスクリプションを持つコンポーネントがあります。

@Component(...)
export class FooComponent implements OnInit, OnDestroy {
  fooFormControl: FormControl;

  ...

  ngOnInit() {
    this.fooFormControl.valueChanges.subscribe(
      () => {...},
      () => {},
      () => {
        // never happens
      },
    );
  }

  ngOnDestroy() {
    //happens
  }
}

ただし、コンポーネントが破棄されると、FormControl 要素は破棄されず、onComplete コールバックは発生しません。

コンポーネントの破棄でFormControl要素を破棄する正しい方法は何ですか?

4

3 に答える 3

0

フォーム コントロールを破棄することはできません。コンポーネント内のすべてが破棄されますが、イベントはアプリ内で保持できます。そのため、そのイベントのサブスクライブを解除できます。

@Component(...)
export class FooComponent implements OnInit, OnDestroy {
  fooFormControl: FormControl;
  var subscriber;

  ...

  ngOnInit() {
    this.subscriber = this.fooFormControl.valueChanges.subscribe(
      () => {...},
      () => {},
      () => {
        // never happens
      },
    );
  }

  ngOnDestroy() {
    this.subscriber.unsubscribe();
  }
}
于 2017-06-17T10:13:51.737 に答える