2017-02-17 10 views
1

У меня есть компонент с входом и переменной:Угловое 2 - Как изменить входной B в ngOnChange (срабатывает при изменении входного сигнала А)

@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

легче создать сеттер

_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'. –