我是 TypeScript 和 Angular 的初学者,所以这个问题可能有些奇怪。 我有一个返回英雄列表的简单 JSON: http://demo8521374.mockable.io/titan
我需要我的服务来执行 GetById,但为什么 Hero 总是未定义,有人可以指点我正确的位置吗,这就是我正在做的:
return this.http.get("http://demo8521374.mockable.io/titan").map((response: Response) => {
var result = response.json().heroes as Hero[];
console.log(result);
return result;
}).filter(x => x.filter(x => x.id == id)).first().toPromise();
在我的控制台中,我可以看到打印了数组,但在我的组件中没有获取对象:
ngOnInit(): void {
this.route.paramMap
.switchMap((params: ParamMap) => this.heroService.getHero(+params.get('id')))
.subscribe(hero => this.hero = hero);
console.log(this.hero)
}
谢谢!
最佳答案
按如下方式修改代码并且它有效,当然还有更好的方法:
getHero(id: number): Promise<Hero> {
return this.http.get("http://demo8521374.mockable.io/titan").map((response: Response) => {
var result = response.json().heroes as Hero[];
console.log(result);
return result;
})
.map(heros => {
let y = heros.filter(x => x.id == id)[0]
console.log(y);
return y;
})
.toPromise();
关于Angular observable 不过滤 json 数组结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46668829/