33
Mam prosty komponent Angular 2 z @Input
, który łączę z szablonem. Szablon pokazuje dane wejściowe, ale nie można uzyskać do niego dostęp z konstruktora:Nie można uzyskać dostępu do danych wejściowych z mojego kontrolera/konstruktora.
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
}
}
Oto plunker na przykładzie (patrz „nazwy-component.ts”).
Co robię źle?
podstawie nowszych API, to rzeczywiście trzeba importować OnInit z „angular2/angular2”, a następnie zmienić klasę wdrożyć OnInit tak to powinno wyglądać: eksport domyślna klasa NamesComponent realizuje OnInit { . .. } – jgo
Ta odpowiedź nadal działa z wersją 2.0.0-beta.8. Tak więc można zainicjować usługę w konstruktorze (konstruktorze (dataService: DataService) {this.dataService = dataservice}). Ale rzeczywiste pobranie usługi przy użyciu danych wejściowych jako argumentu musi nastąpić w ramach funkcji ngOnInit() (używając czegoś takiego jak ngOnInit() {var data = this.dataService; this.dataService.getData (data) .subscribe .. . –