2016-09-26 111 views
1

iam試圖做出一個簡單的網格組件,我在發射事件後更新視圖時遇到了麻煩! 請解釋誰知道,爲什麼更新簡單的組件後,視圖不要重新渲染?這段代碼有什麼問題?angular2 @Input EventEmitter更新視圖

export class GridComponent implements OnInit { 
    @Input() resource: any []; 
    @Output() saveModel = new EventEmitter(); 
    @Output() deleteModel = new EventEmitter(); 
    attributes: any[]; 
    isUpdating: boolean = false; 
    updatingID: number; 

    constructor() {} 

    ngOnInit() { 
    this.attributes = Object.keys(this.resource[0]); 
    } 

    toggleUpdate(id, flag = true) { 
    this.isUpdating = !this.isUpdating; 
    this.updatingID = flag ? id : undefined; 
    } 

    destroy(id) { 
    this.deleteModel.emit(id); 
    } 

    save(model) { 
    this.saveModel.emit(model); 
    this.toggleUpdate(model.id, false); 
    } 

    cancel(id) { 
    this.toggleUpdate(id, false); 
    } 

} 

這裏https://plnkr.co/edit/InxsHu9GwCtMplYoocsS?p=preview

+0

預期行爲是什麼?需要採取哪些步驟來重現問題? –

+0

我有一個對象數組,並在網格組件中,只是* ngFor指令循環此數組,第二個* ngFor循環對象與自定義管道。 GridComponent有@Output銷燬和保存。點擊更新按鈕時,數據組件將顯示帶有當前模型值的輸入,並將其與模型綁定。保存方法觸發器事件和父組件偵聽該事件,並且新數據正確傳遞,接下來我用新數組替換,但在屏幕上顯示相同的數據。我嘗試實現ngOnChanges事件並分配給this.resource = values.resource.currentValue,但未成功 –

回答

1

resource數據在父母和孩子組成部分更新正確完整的示例,只是形式不顯示更新。

我認爲你需要改變values管只返回鍵而不是值,然後使用*ngFor變量與鍵訪問值直接獲取視圖中的值。

0

編輯: GünterZöchbauer,謝謝你救了我的時間!

我認爲你需要改變值管道只返回鍵而不是值,然後使用鍵的* ngFor變量訪問值直接獲取視圖中的值。

這是邪惡根源