首页 > 解决方案 > Angular Messenger 服务错误 TS2769:没有重载匹配此调用

问题描述

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

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)
      }
    )


  }

}

标签: angulartypescript

解决方案


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


推荐阅读