admin管理员组

文章数量:1293149

I am working on this angular2 app in which I am accepting two inputs in one ponent.

I have used ngOnChanges to detect changes on these input values.

@Input() games: any;
@Input() selectedGame:any;

ngOnChanges(changes: {[propName: string]: SimpleChange}) {    
    this.selectedGame=changes['selectedGame'].currentValue;  //this works
    this.games=changes['games'].currentValue;    //this doesn't work
}

However, I can only detect change in first variable. the second variable is not getting updated when its value changes in parent.

any inputs?

I am working on this angular2 app in which I am accepting two inputs in one ponent.

I have used ngOnChanges to detect changes on these input values.

@Input() games: any;
@Input() selectedGame:any;

ngOnChanges(changes: {[propName: string]: SimpleChange}) {    
    this.selectedGame=changes['selectedGame'].currentValue;  //this works
    this.games=changes['games'].currentValue;    //this doesn't work
}

However, I can only detect change in first variable. the second variable is not getting updated when its value changes in parent.

any inputs?

Share asked Aug 23, 2016 at 10:46 Bhushan GadekarBhushan Gadekar 13.8k21 gold badges88 silver badges131 bronze badges 1
  • Can you reproduce this issue in Plunker? – Yaron Schwimmer Commented Aug 23, 2016 at 10:52
Add a ment  | 

2 Answers 2

Reset to default 6

Depending on the change from the parent ponent, ngOnChanges might be triggered separately for each Input changed. You need to check which Input has changed first.

ngOnChanges(changes: SimpleChange}) {   
    if(changes['selectedGame'] !== undefined)
        this.selectedGame=changes['selectedGame'].currentValue;

    if(changes['games'] !== undefined)
        this.games=changes['games'].currentValue;
}

Here's the working plunk https://plnkr.co/edit/n6X21VHXw1xlA8XCPoQu

You supposed to use SimpleChanges instaed of SimpleChange, it will give you all list of input parameters.

ngOnChanges(changes: SimpleChanges) {
 for (let propName in changes) {  
   let change = changes[propName];
   let curVal  = JSON.stringify(change.currentValue);
   let prevVal = JSON.stringify(change.previousValue);

    console.log(curVal);
    console.log(prevVal);
 }
}

本文标签: javascriptangular2 ngOnChanges not working for multiple inputsStack Overflow