私は、Jsonデータを取得してテーブルとして表示しているAngular2アプリケーションを持っています。新しいデータで更新/更新しようとすると、テーブルに古いデータのみが表示されます。以下のようなサービスを介してデータを取得Angular2テーブルがデータをリフレッシュしていません
:以下のようなテーブルで
@Input()
participants:Participant[];
testClasses: TestClass[] = [];
ngOnChanges() {
let codes="";
for (let item of this.participants)
{
codes = codes.concat(item.Id).concat(",");
}
this.buildTable(codes);
}
buildTable(codes){
let url = this.serverUrl + "api/test?codes=" + codes;
// passing input participants as parameter in url
this.testService.getData(url)
.subscribe(data => this.onDataUpdate(data));
}
onDataUpdate(data: any) {
this.testClasses = data;
// here I am getting new/refreshed data.
}
がdisplying:
<table id="testGrid">
<tr *ngFor="let testClass of testClasses">
<td>{{testClass.name}}</td>
<td *ngFor="let t of (testClass.Score)">
{{ t }}
</td>
</tr>
</table>
ページのロードデータは初めて、テーブルにデータを示しているが、私はデータを更新しようとすると、新しいリフレッシュされたデータがonDataUpdate関数で表示されますが、htmlテーブルでは新しいデータで表示が更新されません。
ご意見やご協力をいただければ幸いです。
私は下のリンクを試してみました:
https://github.com/swimlane/ngx-datatable/issues/255
Angular 2 - View not updating after model changes
あなたが要求を行うためにngOnchangesを使用する理由私は理解していません。技術的には2回も2回発射する必要があり、最初のロード時にデータを2回(onDataUpdateで)表示する必要があります。とにかく、リフレッシュをどのようにトリガーしますか?クリックで?それは本当にコンポーネントなので、入力が変化したときにリフレッシュしたいのですか? – runit
こんにちは@runit、私はチェックボックスのリストを持って、testServiceへの入力として選択項目を渡します。サービスがデータを取得していて、onDataUpdate関数で新しいデータを見ることはできますが、ビューは新しいデータで更新されていません。それが理にかなってほしい。また、私はサービスを呼び出すために私の質問を少し更新しました。私はライフサイクルフックを見たり、手動でビューをリフレッシュする必要があるかどうかはわかりません。 – Riddhi