質問
最近問題が発生しました:
最後に、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/