Have some data in a service, and was working perfectly when I had data in an object sitting on the service, but now that I've hooked up a database connection, the data never makes it to the component.
I want the service to subscribe to the data coming back from the database and have defined the call like this:
public setPerson(ac: string): void{
console.log(ac);
this.generatePerson(ac).subscribe((data) => {
// this.mapPersonFromInput(data[0]);
console.dir(data);
});
}
The mapPersonFrominput()
function is a holdover from mocked data. it is essentially the same as extractData further below, but from a static object in the code.
generatePerson looks like this:
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 simply assigns values from the input object to the service's object structure, and handleerror simply logs the error to the console.
I call the service to initialize the data object from the component before the component loads by calling this function from a navigation component:
passCodeToService():void{
this.psn.setPerson(this.accessCode);
this.route.navigate(['/name']);
}
and in the actual component that should get the data, I'm using ngOnInit, but I think I should be using ngOnChanges to initialize the component. Here's the code that I'm currently using, but haven't had luck fixing just yet.
ngOnInit() {
this.name =this.psn.getName();
console.log(this.name);
}
getName()
simply returns the object that I'm storing in the service.
public getName(): Name{
return this.servicePerson.name;
}