2017-02-17 56 views
1

我有一個輸入和一個可變的成分:角2 - 如何修改ngOnChange輸入B(通過改變輸入A觸發)

@Input() data: string[]; 
@Input() val: string = ''; 

ngOnChanges(changes: SimpleChanges) { 
    for (let propName in changes) { 
     if (propName == 'data') { 
      this.val = 'hello'; 
     } 
    } 
} 

問題是,我需要改變輸入val數據被更改。但我有以下錯誤:

Expression has changed after it was checked. Previous value: 'false'. Current value: 'true'. 

謝謝!

回答

0

它更容易創建一個setter

_data: string[]; 
@Input() set data(val: string[]) { 
    this._data = val; 
    this.val = 'abc' 
    // this.cdRef.detectChanges(); 
} 
get data() { return this._data; } 

@Input() val: string = ''; 

如果仍然出現錯誤然後添加

constructor(private cdRef:ChangeDetectorRef) {} 

和評論在上面的二傳手註釋掉線。

+0

謝謝,但我用** this.cdRef.detectChanges()**,但仍然有這個錯誤。 –

+0

你從'false'變爲'true'的值是多少? –