2017-09-18 2 views
1

Ich möchte Daten bearbeiten, die in einer untergeordneten Komponente übergeben wird, aber ich kann nicht auf diese Variable aus der Komponente zugreifen. Ich kann nur scheinen, die Daten von der Schablone zu erhalten. Warum ist die Datenvariable nicht innerhalb der Komponente, aber nicht in der Vorlage definiert?Angular manipulieren @ Input-Daten in der Komponente

Geordnete Komponente Vorlage:

//messageReceived is an array of objects 
<app-data-table [data]='messageReceived'> 

Kinderkomponente

@Input() data: any; 
constructor() {console.log(this.data)} /*This DOESN'T work. this.data is undefined 
ngOnInit() { 
    console.log(this.data) /*empty object*/ 
} 

Kinderkomponentenvorlage:

{{data | json }} <!--This DOES work--> 
+1

Sie suchen 'ngOnChanges/ngOnInit' – yurzui

+0

@yurzui ich ein leeres Objekt für ngOnChanges verwenden/ngOnInit – Anthony

+1

Sie Daten vom Server bekommen sind? Hast du den 'ngOnChanges'-Haken probiert? – yurzui

Antwort

1

Weil du es im Konstruktor verwenden, wenn die Komponente erst dann beginnt, aber Eingänge Initiieren sind nicht gebunden. Sie sollten

ngOnInit() { 
conosle.log(this.data) 
} 

oder

ngOnChanges(changes) { 
    console.log(changes.data); 
    if (changes.data) { 
     this.data = this.data.currentValue; 
     console.log(this.data) 
    } 
    } 
+1

Perfekt! mit Ausnahme von this.data.currentValue. In meinem Fall sollte das nur das sein. – Anthony

Verwandte Themen