在服务中有一些数据,并且当我在服务上的对象中有数据时工作得很好,但是现在我已经连接了数据库连接,数据永远不会进入组件。
我希望服务订阅从数据库返回的数据并定义如下调用:
public setPerson(ac: string): void{
console.log(ac);
this.generatePerson(ac).subscribe((data) => {
// this.mapPersonFromInput(data[0]);
console.dir(data);
});
}
该mapPersonFrominput()
函数是模拟数据的保留。它与下面的 extractData 基本相同,但来自代码中的静态对象。
generatePerson 看起来像这样:
public generatePerson(id: string):Observable<Person>{
var datRetUrl: string = '/api/'
var fullUrl: string = datRetUrl + id;
return this.http.get(fullUrl)
.map(this.extractData)
.catch(this.handleError);
}
extractData 只是将输入对象中的值分配给服务的对象结构,handleerror 只是将错误记录到控制台。
我通过从导航组件调用此函数来调用服务以在组件加载之前从组件初始化数据对象:
passCodeToService():void{
this.psn.setPerson(this.accessCode);
this.route.navigate(['/name']);
}
在应该获取数据的实际组件中,我使用的是 ngOnInit,但我认为我应该使用 ngOnChanges 来初始化组件。这是我目前正在使用的代码,但还没有修复。
ngOnInit() {
this.name =this.psn.getName();
console.log(this.name);
}
getName()
只需返回我存储在服务中的对象。
public getName(): Name{
return this.servicePerson.name;
}