角度変化の検出と解決エラー: NG0100: ExpressionChangedAfterItHasBeenCheckedError: 式が変更されました

質問

最近問題が発生しました:
ここに画像の説明を挿入

最後に、https://angular.io/errors/NG0100 で解決策を見つけました。
ここに画像の説明を挿入

ここに画像の説明を挿入

変更検出を手動でトリガーします。
ここに画像の説明を挿入

非同期操作による変更検出のトリガー:
ここに画像の説明を挿入
ここに画像の説明を挿入

要約:
.....

変更検出

何の変化検出?

ビューと状態の間の変化を検出することにより、状態が変化した後、ビューを更新するのに役立ちます. ビューをデータと同期させるこのメカニズムは、変更検出と呼ばれます.

何が変化検出をトリガーしますか?

非同期操作は、変更検出をトリガーします。例えば:

  • クリック イベント (ブラウザ イベント) が発生したとき。
  • http リクエスト。
  • タイマー: setInterval(), setTimeout().
  • Promise.resolve().then(() => {});

ライフサイクルフック

エッセンス

  • 生命周期一直伴随着变更检测、Angular はデータ バインドされたプロパティへの変更をチェックし、必要に応じてビューとコンポーネント インスタンスを更新します。
  • ライフサイクル开始: コンポーネント インスタンスのライフサイクルは、Angular がコンポーネント クラスをインスタンス化し、コンポーネントのビューとそのサブビューをレンダリングするときに始まります。
  • Lifecycle 结束: Angular がコンポーネント インスタンスを破棄し、DOM からレンダリングされたテンプレートを削除すると、ライフサイクルは終了します。

実行順序

例証する
withOnChanges() このフックの呼び出しは、@Input()変更されたトリガーされます。それ以外の場合は呼び出されません。
withOnInit() Angular が最初にデータ バインディングを表示し、ディレクティブ/コンポーネントの入力プロパティを設定した後初始化指令/组件それは間違いなく呼び出され、一度だけ呼び出されます。
ngDoCheck() 自定义变更检测逻辑
ngAfterContentInit() Angular が外部コンテンツをコンポーネントのビューまたはディレクティブが存在するビューに投影した後に呼び出されます。响应内容中的变更
ngAfterContentChecked() 响应被投影内容的变更
ngAfterViewInit() Angular がコンポーネント ビューとそのサブビュー、またはこのディレクティブを含むビューを初期化した後に呼び出されます。响应视图变更
ngAfterViewChecked()
ngOnDestroy()

学習リソース

Angular Change Detection 詳細説明
NG0100: チェック後に式が変更されました

https://blog.angular-university.io/angular-debugging/

おすすめ

転載: blog.csdn.net/Kate_sicheng/article/details/128154256