1. ホーム
  2. angular

[解決済み] Angularで変更検知を手動でトリガーする

2022-03-22 18:42:12

質問

Angularコンポーネントを書いているのですが、プロパティに Mode(): string .

このプロパティは、イベントに応答するのではなく、プログラムによって設定できるようにしたいと思います。

問題は、ブラウザのイベントがない場合、テンプレートバインディングの {{Mode}} は更新されない。

この変更検出を手動で起動する方法はありますか?

解決方法は?

以下のいずれかをお試しください。

  • ApplicationRef.tick() - と同じように、AngularJSの $rootScope.$digest() -- つまり、コンポーネントツリー全体をチェックします。
  • NgZone.run(callback) - と同様 $rootScope.$apply(callback) -- すなわち、Angularゾーン内でコールバック関数を評価する。これは、コールバック関数を実行した後、コンポーネントツリー全体をチェックすることになると思いますが、確かではありません。
  • ChangeDetectorRef.detectChanges() - と同様 $scope.$digest() -- つまり、このコンポーネントとその子コンポーネントのみをチェックします。

を注入することができます。 ApplicationRef , NgZone または ChangeDetectorRef をコンポーネントに追加します。