1

一連のデータを表示する角度のあるプロジェクトに取り組んでいます。そのために、primNGデータ テーブルを使用しています。すべて正常に動作しますが、データ ソースからエントリを削除すると、データ テーブルが更新されず、削除されたエントリがテーブルに表示されます。どんな助けでも大歓迎です。

mycomponent.html

 <p-dataTable [value]="tabledata">
    <p-column field="vin" header="Vin"></p-column>
    <p-column field="year" header="Year"></p-column>
    <p-column field="brand" header="Brand"></p-column>
    <p-column field="color" header="Color"></p-column>
</p-dataTable>

削除時にデータソースをスライスしています

mycomponent.ts

this.tabledata.slice(this.tabledata.indexOf(datatodelete), 1); 
4

2 に答える 2

2

あなたが提供Change detectionしたリンクの章を読んでください。

基本的には、テーブルの値を格納する配列を変更する可能性が高く、角度は配列がまだ同じであるため、データが変更されたことを認識しないということです。したがって、削除したものを除いて、古いものからのすべての値で新しい配列を作成する必要があります。次に、角度は、配列参照が変更されるため、テーブルを再レンダリングする必要があることがわかります。

Angular Change Detection 戦略の詳細については、こちらをご覧ください。基本的に、検出戦略を使用するdefaultと、Angular が常にすべてのコンポーネントの変更をチェックするため、すべてが機能します。ただし、大きな Web ページでは非常に遅くなる可能性があるため、変更検出戦略を使用することをお勧めしますOnPush。オブジェクトの参照のみをチェックし、それらが変更されている場合は、ビュー (表示内容) を更新します。これが正確にどのように機能するかについては、ここに記載できない詳細がかなりあります。

于 2017-09-08T06:28:30.087 に答える