更新@Input()更改变量

时间:2017-11-28 13:57:19

标签: angular

我有一个Input变量,其值在parentComponent中更改。 在每次更改时,我都需要将一个名为currentNumber的变量更新为子组件。目前我只在onInit方法中初始化它,但输入在childComponent.ts的生命周期内发生了变化

ChildComponent.ts

@Input() input;
...
...
ngOnInit(){
    this.currentNumber = this.data.someOtherNumber+this.input.numberIneed;;
}

我知道观察者,但我觉得为此宣布另一项服务是一种矫枉过正。

3 个答案:

答案 0 :(得分:12)

您可以使用setter:

private _input: number;
@Input() set input(value: number) {
     this._input = value;
     this.currentNumber = this.data.someOtherNumber + this.input.numberIneed; 
}; 
get input() { return this._input; }

或ngOnChanges:

export class ChildComponent implements OnChanges {
    // ...
    ngOnChanges(changes: { [propName: string]: SimpleChange }) {
         if (changes['input'] && changes['input'].currentValue !== changes['input'].previousValue) {
             this.currentNumber = this.data.someOtherNumber+this.input.numberIneed;
         }
    }
}

答案 1 :(得分:3)

您可以使用setter。

// event can set the token
await Events.MessageReceived(messageReceivedContext);

// ...

// If application retrieved token from somewhere else, use that.
token = messageReceivedContext.Token;

答案 2 :(得分:2)

您可以使用ngOnChanges。如果输入改变,则调用此函数:

ngOnChanges(){
  this.currentNumber = this.data.someOtherNumber + this.input.numberIneed;
}