【问题标题】:Angular 2 - How to modify an input B in ngOnChange (triggered by changing input A)Angular 2 - 如何在 ngOnChange 中修改输入 B(通过更改输入 A 触发)
【发布时间】:2017-07-06 22:38:19
【问题描述】:

我有一个带有输入和变量的组件:

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

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

问题是,当 data 更改时,我需要更改输入 val。但我有以下错误:

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

谢谢!

【问题讨论】:

    标签: angular triggers onchange observable angular2-docheck


    【解决方案1】:

    创建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) {}
    

    并在上面的设置器中注释掉的行中进行注释。

    【讨论】:

    • 谢谢,但我已经使用了 this.cdRef.detectChanges() 但仍然有这个错误。
    • 你把false改成true的值是多少。
    猜你喜欢
    • 1970-01-01
    • 2018-06-19
    • 2018-06-18
    • 1970-01-01
    • 2019-05-11
    • 1970-01-01
    • 2015-05-30
    • 1970-01-01
    • 2015-08-15
    相关资源
    最近更新 更多