Имею некоторые данные в службе и отлично работал, когда у меня были данные в объекте, находящемся в службе, но теперь, когда я подключил соединение с базой данных, данные никогда не попадают в компонент.
Я хочу, чтобы служба подписывалась на данные, возвращаемые из базы данных, и определяла вызов следующим образом:
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;
}
.subscribe()
наgeneratePerson()
и видели ли вы общение через тему - person 0mpurdy   schedule 02.08.2017