ionic 5 : TypeError: 不能读取未定义的属性'subscribe'。

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了ionic 5 : TypeError: 不能读取未定义的属性'subscribe'。相关的知识,希望对你有一定的参考价值。

我在 IONIC 5 中有这个服务。


import { HttpClient } from '@angular/common/http';
.
.
.
getPlaces(placeId: string) {
return this.httpClient.get(
        `https://test.com/offered-place/${placeId}.json`)
}
.
.
.

在我的组件中,当我尝试调用 may service 的函数并订阅它时。


this.myService.getPlaces().subscribe(()=>{})...

我得到了一个错误。TypeError.Canot read property 'subscribe' of undefined: Cannot read property 'subscribe' of undefined.


但当我尝试在服务中订阅时,它就能正常工作了!

ps:

  • IONIC 5

我的服务被注入到我的组件的构造函数中(我在那里得到了我的错误)

我的服务是有注释的。

@Injectable({ providedIn: 'root'})

  • IDE Visual Code

先谢谢你

答案

在组件中,这是不可能的,因为getPlaces函数需要placeID,而在组件中,当你在调用

this.myService.getPlaces().subscribe(()=>{})...

所以你必须把placeID传到这里,然后像我写的结果一样,通过添加一个引用来订阅它。现在在result中,你将拥有来自api的数据。

this.myService.getPlaces(placeID should be passed here).subscribe((result)=>{console.log(result);})...

并在服务中添加Observale到函数中。

getPlaces(placeId: string): Observable<any> {
return this.httpClient.get(
        `https://test.com/offered-place/${placeId}.json`)
}

以上是关于ionic 5 : TypeError: 不能读取未定义的属性'subscribe'。的主要内容,如果未能解决你的问题,请参考以下文章

NgZone/Angular2/Ionic2 TypeError:无法读取未定义的属性“运行”

Ionic3测试:TypeError:无法读取undefined的属性'subscribe'

ionic native http get return typeError - 无法读取未定义的属性“匹配”

未捕获(承诺):TypeError:无法读取未定义的属性“创建”(离子 3.9,Angularjs 5.0.3)

TypeError:无法读取未定义()离子3的属性'toastController' [重复]

离子框架中的 RaphaelJS:TypeError:无法读取未定义的属性“路径”