解決: 問題はrxJSスレッドで発生しました。 1つのスレッドが頻繁に空の配列を渡したため、テーブルがリセットされました。角度4のcdkテーブルtrackbyが機能しません。テーブル全体が再レンダリングされます
テーブルは4秒ごとに更新されます。点滅を止めるには、trackBy関数を適用します。私は関数がトリガされているが、テーブル全体が再レンダリングされていることがわかります。私は何か間違っていると思う。 私は何をしますか... トラッキング機能を設定します。
<mat-table ... [trackBy]="trackById">
トラッキング機能を実装します。
trackById(index, item) {
console.log(item._id);
return item._id;
}
テーブルは、テーブルのデータソース更新によって更新されます。
updateOperations() {
this.dataSource = new Source(this.forexService);
}
全体の成分はここにあるhttps://gist.github.com/vlikin/6f130c53b1fd38116afe20d15a2afc40です。
このコンポーネントは、操作のリストを表示します。 2つの観測値からデータを取得します。テーブルのデータソースは一度作成されます。データの変更は、Behavior Subjectデータによって開始されます。データ再処理プロセスは、関数update
にあります。 mat-tableコンポーネントは、出力を最適化する必要のあるディレクティブtrackByを使用します。しかし、それはまだ点滅しています。
trackIdとない2 plunksありますと - すべてのそのような効果はありませんhttps://embed.plnkr.co/Rc9z9aXlalQe8yWpGjUq/
からhttps://embed.plnkr.co/wK5Jh4tIgY9p9Gw4rfhx/ はなしで。私のアプリケーションでは、それは点滅しています。
誰でも私を助けてくれることを願っています。よろしく。
アイテム//またはインデックスと* ngFor ".....; trackBy:trackById"を返すだけです。 ngForを使用していない場合は、コードを投稿してください – Vega
全体のコンポーネントはhttps://gist.github.com/vlikin/6f130c53b1fd38116afe20d15a2afc40です。 このコンポーネントは、操作のリストを表示します。 2つの観測値からデータを取得します。テーブルのデータソースは一度作成されます。データの変更は、Behavior Subjectデータによって開始されます。データ再処理プロセスは、 'update'関数内にあります。 mat-tableコンポーネントは、出力を最適化する必要のあるディレクティブtrackByを使用します。しかし、それはまだ点滅しています。 –
Mat-tableには、trackByIdメソッドでconsole.logを設定すると、(もしあれば)その例であれば、知っている限り、trackby属性はありません。それは属性ではないという私の考えを強化する – Vega