无法订阅,因为返回值是AnonymousSubject而不是Observable

时间:2017-10-03 20:24:50

标签: javascript angular typescript observable

我正在面对Angular 4中的问题,尝试在点击“用户链接配置文件”时获取特定用户的详细信息。

但是我无法订阅我的函数,因为switchMap的返回值是AnonymousSubject而不是Observable:

    ngOnInit() {
    this.route.paramMap.switchMap((params: ParamMap) => this.getHero(+params.get('id')))
      .subscribe(hero => {
        this.hero = hero;
      })
  }

以下是getHero功能:

  getHero(id: number) {
     return this.getHeroes().find(hero=>hero.id===id);
  }

getHeroes()函数返回json数据的简单对象,其中包含有关英雄(id和name)的详细信息。

感谢您的任何帮助/建议!

1 个答案:

答案 0 :(得分:0)

switchMap希望您返回Observable,Promise,Array或Iterable。您的getHero方法正在返回一个对象。尝试让它返回带有对象值的observable。

getHero(id: number) {
    let hero = this.getHeroes().find(hero=>hero.id===id);
    return Observable.of(hero);
}