Angular の DestroyRef プロバイダーについて理解する

Angular v16では、 と呼ばれる新しいプロバイダーが導入されましたDestroyRef。これにより、特定のライフサイクル スコープの破棄コールバックを登録できるようになります。この機能は、コンポーネント、ディレクティブ、パイプ、埋め込みビュー、および のインスタンスに適用できますEnvironmentInjector。

の使い方はDestroyRef簡単です。次のようにDestroyRefプロバイダーを挿入してコールバックを登録できます。destroy

@Component({
  selector: 'foo',
  standalone: true,
  template: '',
})
class FooComponent {
  constructor() {
    inject(DestroyRef).onDestroy(() => {
      // do something when the component is destroyed
    })
  }
}

を使用すると、 が破棄されたときに継承を必要とせずにDestroyRef必要なクリーンアップ タスクを実行する再利用可能なロジックを作成できます。これにより、実装プロセスが簡素化され、複雑さが軽減されます。scope

たとえば、以下untilDestroyedに依存する演算子を作成できますDestroyRef。

export function untilDestroyed() {
  const subject = new Subject();

  inject(DestroyRef).onDestroy(() => {
    subject.next(true);
    subject.complete();
  });

  return <T>() => takeUntil<T>(subject.asObservable());
}
@Directive({
  selector: '[appFoo]',
  standalone: true,
})
export class FooDirective {
  private untilDestroyed = untilDestroyed();

  ngOnInit() {
    interval(1000)
      .pipe(this.untilDestroyed())
      .subscribe(console.log);
  }
}

提案された投稿

ノーコード革命: Webflow、Framer、Bubble.io でビジネスの繁栄を解き放つ

ノーコード革命: Webflow、Framer、Bubble.io でビジネスの繁栄を解き放つ

これらの驚くべきノーコード プラットフォームの未開発の可能性を活用しながら、革新と成功のスリリングな旅に乗り出しましょう。注目すべき女性起業家であるサプナについての話をさせてください。

私が最もよく使用するコーディング リソース

私が最もよく使用するコーディング リソース

今週、毎日のメールリストのメンバーからメールを受け取りました。彼らは次のことを知りたかったのです。毎日、毎週、毎月どのリソースにアクセスしていますか? 素晴らしい質問です!私のワークフローと使用している主なリソースについての洞察を共有したいと思います。

関連記事

一部のフリーランサーが自分の人生を偽っている理由

一部のフリーランサーが自分の人生を偽っている理由

私は最近、世界最大のプロフェッショナルなソーシャル ネットワークである Linkedin を利用していて、フォローしているフリーランス デザイナーの注目を集めた投稿を見つけました。彼らはすべて、飛行機からの写真、ラップトップを持ってビーチで撮影した写真、スイミング プールやオフィスから素晴らしい景色を眺めた写真を投稿していました。

ドメイン名に関する情報の検索

Brian P. Hogan 著『Small, Sharp Software Tools』からの抜粋

ドメイン名に関する情報の検索

facebook.com にリクエストを送信すると、コンピュータはドメイン名を検索してそのドメイン名を IP アドレスに変換し、コンピュータが接続できるようにします。

赤髪の少女単独公演

ヘイデンからの依頼で、ケイティは自分のオナニーを撮影する。

赤髪の少女単独公演

一緒に過ごした夜を終え、ヘイデンがケイティを大学の寮に車で送ったのは真夜中過ぎだった。彼女は朝早くから授業があり、前夜彼と一緒にいた後、着替えを持っていませんでした。

ジャーナル・アウトバート

ジャーナル・アウトバート

日記を開く: 1 日 1 枚の写真。私はいつも物語に魅了されてきました。