Angular中调用getProducts无法订阅,提示subscribe不存在错误求助
解决"Property 'subscribe' does not exist on type '() => Observable'"错误
问题根源
你在服务的getProducts方法里返回的是asObservable方法的引用,而非调用该方法后得到的Observable对象。asObservable是一个方法,必须加括号执行才能返回可订阅的Observable实例。
修改服务代码
将服务中的return this.productsList.asObservable;改为return this.productsList.asObservable();:
public cartItemList :any = []; public productsList = new BehaviorSubject<any>([]) constructor() { } getProducts(){ return this.productsList.asObservable(); // 补充括号调用方法 }
组件代码无需修改
你的组件订阅逻辑是正确的,只要服务方法返回了合法的Observable,就能正常订阅:
public totalItem:Number = 0; constructor(private cartService:CartService){} ngOnInit():void{ this.cartService.getProducts() .subscribe((res:any)=>{ this.totalItem =res.length;}) }
补充说明
BehaviorSubject的asObservable()方法会返回一个Observable实例,这个实例可以被订阅以接收BehaviorSubject后续发射的值。如果不加括号,你返回的只是方法本身,自然不存在subscribe方法,也就触发了报错。
内容的提问来源于stack exchange,提问作者batuk nath bansiwala
相关产品推荐
相关产品推荐

