打字稿抱怨现有对象不存在

时间:2018-08-12 14:20:27

标签: angular typescript

我从CartComponent调用CartService中的removeItem()函数。

CartComponent#removeItem():

public removeItem(itemId:string) {
    this.cartService.removeItem(itemId).subscribe(cart => {
      console.log('CartComponent#removeItem', )
      this.cartItems = cart.cartItem;
    });
  }

Typescript为cart.cartItem给出以下错误:

[ts] Property 'cartItem' does not exist on type 'void'.
any

我已经在另一个应用程序中做到了这一点,并且效果很好。

CartService#removeItem()

public removeItem(itemId:string) {
   console.log('CartService#removeItem', itemId)
   return this.httpClient.delete<Cart>(`${this.cartItemUrl}${itemId}`)
   .pipe(
     tap(cart => console.log('cart@removeItem', cart)),
     // map(cart => this.cart = cart, this.setItemCount()),
     map(cart => {
       this.cart = cart;
       this.setItemCount();
     }),
     catchError(this.handleError.bind(this))
   )
 }

1 个答案:

答案 0 :(得分:2)

map函数用于转换Observable的发射值。从map返回的值都是发射值。

如果遇到这种情况,则map函数不会返回任何内容,因此subscribe中的CartComponent无法访问该值。