我正在尝试使用信使服务将产品发送到购物车组件。 “产品”只是一个包含产品属性的类,我能够将它记录到购物车组件中的控制台,但是在设置订阅方法时,购物车组件订阅方法中的“产品:产品”行会导致以下错误消息弹出
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)
}
)
}
}
答案 0 :(得分:1)
请添加主题类型。 主题=新主题();
答案 1 :(得分:-1)
只需添加主题类型。 主题=新主题(); 它将解决问题