2017-11-28 3 views
1

値がparentComponentで変更された入力変数があります。 毎回、子コンポーネントにローカルなcurrentNumberという変数を更新する必要があります。私はchildComponent.ts@Input()の変数を更新します。

ChildComponent.ts 

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

の生活の時間をかけてonInit方法が、入力の変化でそれを初期化現時点では私はオブザーバーの承知していますが、私はちょうどこのために別のサービスを宣言することは行き過ぎであることのように感じます。

+1

['ngOnChanges'](https://angular.io/api/core/OnChanges) – n00dl3

答えて

5

あなたはセッターを使用することができます。入力が変更された場合:

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

セッターを使用することができます。あなたは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; 
     } 
    } 
} 
2

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:

@Input('input') 
set input(value: numer) { 
    this.currentNumber = this.data.someOtherNumber+this.input.numberIneed; 
} 
関連する問題