的內屬性的變化修改對象的內部屬性,如下Angular2:當存在用於對象
delete this.siteConfig.sites[siteKey].serverIpWhitelist[ip];
與ngFor
列表綁定不被更新後重新呈現組件。我試過NgZone.run()
和ChangeDetectorRef.detectChanges()
,都不行。
我發現更新列表的唯一方法是添加以下行
this.siteConfig = JSON.parse(JSON.stringify(this.siteConfig));
很愚蠢的,有沒有其他的方式來強制重新呈現組件?
UPDATE:
的ngFor通過KeysPipe
@Pipe({name: 'keys'})
export class KeysPipe implements PipeTransform {
transform(value, args:string[]) : any {
let keys = [];
for (let key in value) {
keys.push({key: key, value: value[key]);
}
return keys;
}
}
循環對象的屬性和ngFor
看起來像*ngFor="let pair of (siteConfig.sites | keys)"
'this.siteConfig = this.siteConfig.slice()'也應該這樣做。 '* ngFor'檢查數組內容的變化,因此我想我們需要更多的細節來診斷問題。 –
'siteConfig'不是'Array',它是一個對象,'ngFor'通過管道將對象轉換爲數組 –