作者:112473228 | 来源:互联网 | 2023-01-04 08:04
我使用Angular5和httpClient来请求一个rest api.我的问题是我完全得到了对象列表但我无法获得单个对象.我使用这个模块的模块我有一个服务,我打电话到api-rest:
getUser(id: string) {
return this.http.get('apiAddress/getbyid?id=' + id);
}
在组件中我称之为
ngOnInit() {
this.id = this.route.snapshot.paramMap.get('id');
this.getUser(this.id);
}
getUser(id): void {
this.userService.getUser(id).subscribe(data => {
this.user = data;
});
}
我在我的模板中调用用户:
{{user.name}}
当我这样做时,我得不到任何显示和错误
TypeError: _co.user is undefined
ERROR CONTEXT Object { view: Object, nodeIndex: 12, nodeDef: Object, elDef: Object, elView: Object }
我可以显示一些内容,但如果在服务中我说我想要一个数组,我仍然会收到错误
getUser(id: string) {
return this.http.get('apiAddress/getbyid?id=' + id);
}
当我打电话给我时,我说
ngOnInit() {
this.id = this.route.snapshot.paramMap.get('id');
this.getUser(this.id);
}
getUser(id): void {
this.userService.getUser(id).subscribe(data => {
this.user = data[0];
});
}
最后,如果我打电话给服务:
getUser(id: string) {
return this.http.get('apiAddress/getbyid?id=' + id);
}
并称之为
ngOnInit() {
this.id = this.route.snapshot.paramMap.get('id');
this.getUser(this.id);
}
getUser(id): void {
this.userService.getUser(id).subscribe(data => {
this.users = data;
});
}
我可以使用*ngFor显示数据,不会出现任何错误.我不太明白为什么.
在Angular的英雄教程中
https://angular.io/tutorial/toh-pt6
他们写了这个服务来获取所有:
getHeroes (): Observable {
return this.http.get(this.heroesUrl)
.pipe(
tap(heroes => this.log(`fetched heroes`)),
catchError(this.handleError('getHeroes', []))
);
}
这一个得到一个
getHero(id: number): Observable {
const url = `${this.heroesUrl}/${id}`;
return this.http.get(url).pipe(
tap(_ => this.log(`fetched hero id=${id}`)),
catchError(this.handleError(`getHero id=${id}`))
);
}
管道用来做几个动作所以这里点击和cathError然后点击我不确定正确理解它用于什么文件
https://github.com/ReactiveX/rxjs/blob/5.5.2/ src/operators/tap.ts#L14
但它似乎用于调试.