【问题标题】:Angular messenger service error TS2769: No overload matches this callAngular Messenger 服务错误 TS2769:没有重载匹配此调用
【发布时间】:2021-05-26 17:04:12
【问题描述】:

我正在尝试使用信使服务将产品发送到购物车组件。 “产品”只是一个包含产品属性的类,我能够将其记录到购物车组件中的控制台,但是在设置订阅方法时,购物车组件的订阅方法中的“产品:产品”行会导致以下错误消息弹出

src/app/cart/cart.component.ts:31:7 - error TS2769: No overload matches this call.
  Overload 1 of 5, '(observer?: NextObserver<unknown> | ErrorObserver<unknown> | CompletionObserver<unknown> | undefined): Subscription', gave the following error...
    

这是我的信使服务文件:

import { Injectable } from '@angular/core';
import {Subject,Observable} from 'rxjs';
import { Product } from './product';
@Injectable({
  providedIn: 'root'
})
export class MessengerService {

  subject=new Subject()

  constructor() { }
  sendMsg(product:any){
    console.log(product)
    this.subject.next(product)

  }

  getMsg(){

    return this.subject.asObservable()
  }
}

这是购物车组件文件:

import { Component, OnInit } from '@angular/core';
import{MessengerService} from 'src/app/messenger.service';
import {Product} from 'src/app/product';
import{CartItem} from 'src/app/cartitem';
import { Observable} from 'rxjs';

@Component({
  selector: 'app-cart',
  templateUrl: './cart.component.html',
  styleUrls: ['./cart.component.css']
})
export class CartComponent implements OnInit {

 cartItems:any[]=[
    
  ] 

  cartTotal=0;

 


  constructor(private msg:MessengerService) { }

  ngOnInit() {

    this.msg.getMsg().subscribe((product: Product) => {
      this.addProductToCart(product)
    })
  }

  addProductToCart(product:Product)
  {
    console.log(product)
    this.cartItems.push(
      {
        productId:product.id,
        productName:product.name,
        qty:1,
        price:product.price

      }
    )
  this.cartTotal=0
    this.cartItems.forEach(
      item=>{
        this.cartTotal+=(item.qty*item.price)
      }
    )


  }

}

【问题讨论】:

  • 试试getMsg(): Observable&lt;Product&gt; {

标签: angular typescript


【解决方案1】:

请添加主题类型。 主题=新主题();

【讨论】:

  • 主题=新主题();
【解决方案2】:

只需添加主题的类型。 主题=新主题(); 它会解决问题

【讨论】:

  • 主题=新主题();你可以参考这个
  • 删除您的一个答案,它们基本相同。您还可以编辑您的答案,无需添加评论。您可以将其编辑到您的答案中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-09-13
  • 2021-03-13
  • 1970-01-01
  • 2021-06-07
  • 1970-01-01
  • 2020-08-22
相关资源
最近更新 更多