我相当确定这与范围问题有关,但是我在网上找不到任何相关信息。我有一项服务,该服务从包含要更新rowData变量的数据的API返回基本的Observable。
MyService.ts
fetchDummyData(): Observable<DummyResponse[]> {
return this.http.get<DummyResponse[]>('***SOME_API***');
}
我的组件
如果我尝试在此处向rowData添加数据,则网格不会更新
rowData = [];
/////////////
////////////Other stuff
this.myService.fetchDummyData().subscribe(
data => {
for (let i = 0; i < data.length; i++) {
this.rowData.push(
{
idType: 'ID Type ' + (i + 1),
description: 'adfasdf'
}
)
//This log prints the correct thing, but rowData remains empty outside the loop
console.log('Row id: ' + this.rowData[i].idType);
}
}
)
但是,如果我在上面的订阅调用之后添加此代码,它将起作用。
rowData = [];
/////////////
////////////Other stuff
this.myService.fetchDummyData().subscribe(
data => {
for (let i = 0; i < data.length; i++) {
//Do Nothing
}
}
)
//This actually updates the rowData
this.rowData.push(
{
idType: 'ID Type ' + (i + 1),
description: 'adfasdf'
}
)
为什么rowData不能在订阅调用中全局更新?
最佳答案
您可以在订阅服务器内部使用api.setRowData(newData)
。
this.myService.fetchDummyData().subscribe(
data => {
let rows = [];
for (let i = 0; i < data.length; i++) {
rows.push({
idType: 'ID Type ' + (i + 1),
description: 'adfasdf'
});
}
this.gridApi.setRowData(rows);
}
)