問題タブ [angular-changedetection]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
1 に答える
84 参照

angular - コンポーネント コンシューマーが ChangeDetectionStrategy を構成できるようにする

を使用する UI ライブラリにコンポーネントがあるとしますが、プロパティを介して代わりChangeDetectionStrategy.Defaultに使用するオプションを消費者に提供したいとしますChangeDetectionStrategy.OnPush(たとえば、パフォーマンスが重要な状況の場合) 。Input()

実行時にコンポーネントの変更検出戦略を変更することは可能ですか? @Componentまたは、デコレータでのみ設定できますか?

0 投票する
0 に答える
1275 参照

angular - Ag-grid defaultColDef が最初のコンポーネントのロード後に再適用されない

Ag-grid は、テーブルが最初に非同期取得されたデータを受け取るときに、ngOnChanges を使用して defaultColDef フォーマット (cellStyle および cellRenderer) を完全に適用します。ただし、グリッドを含むコンポーネントが非表示になり、*ngIf 条件によって再初期化された場合、テーブルには正しいデータが再入力されますが、前と同じように ngOnChanges が再びトリガーされても、defaultColDef フォーマットは再適用されません。this.gridOptions.defaultColDef = this.defaultColDef;ngOnChanges の onGridReady コールバック内に設定されており、デバッグ中に this.defaultColDef が正しいオブジェクトとして定義されていることがわかります。

これは、this.defaultColDef が ngOnInit() で再定義され、さらに ngOnChanges() で再定義された場合でも同様です (簡潔にするために、以下のサンプル コードのコンストラクターに含まれています)。また、onGridReady: (params) 呼び出し全体が ngOnInit() 内で繰り返される場合も同様です。

代わりに、親で columnDefs オブジェクトが構築されるときに、同じ cellStyle および cellRenderer がプロパティとして columnDefs に割り当てられる場合、グリッド コンポーネントが非表示になり、再表示 (再初期化) されるときに、書式設定が正しく適用されます。

実際の結果: コンポーネントの再初期化後に列と行が正しく入力されますが、defaultColDef は適用されません。

期待される結果: hide->show 後のコンポーネントの再初期化後に defaultColDef が適用されます。