33
Ho un semplice componente Angular 2 con @Input
, che collego al modello. Il modello mostra i dati di ingresso, ma non posso accedervi dal costruttore:Impossibile accedere agli input dal mio controller/costruttore
import {Component, View, bootstrap, Input} from 'angular2/angular2';
import DataService from './data-service';
@Component({
selector: 'app-cmp'
})
@View({
template: `{{data.firstName}} {{data.lastName}}` //-> shows the correct 'data'
})
export default class NamesComponent {
@Input() data: any;
constructor(dataService: DataService) {
console.log(this.data);//undefined
}
}
Ecco un plunker con un esempio (vedi "nomi-component.ts").
Cosa sto sbagliando?
Sulla base della api più recente, hai veramente bisogno di importare OnInit da "angular2/angular2", e quindi modificare la classe per implementare OnInit e quindi dovrebbe essere simile: export classe predefinita NamesComponent implementa OnInit { . .. } – jgo
Questa risposta funziona ancora con 2.0.0-beta.8. Quindi un servizio può essere inizializzato nel costruttore (costruttore (dataService: DataService) {this.dataService = dataservice}). Ma il recupero effettivo del servizio usando l'input come argomento dovrebbe avvenire all'interno della funzione ngOnInit() (usando qualcosa come ngOnInit() {var data = this.dataService; this.dataService.getData (data) .subscribe .. . –