我正在创建一个简单的Angular-webshop,并且正在使用Subject和Observable通过服务在两个组件之间发送数据。
由于某种原因,在我的CartComponent中,“项目”未定义,为什么?
我无法缠住它,我缺少重要的东西吗?
服务
ASWebAuthenticationSession
组件
import { Injectable } from '@angular/core';
import { ICartItem } from '../interfaces/ICartItem';
import { Subject } from 'rxjs';
import { IMovie } from '../interfaces/IMovie';
@Injectable({
providedIn: 'root'
})
export class CartService {
private cartSource = new Subject<ICartItem[]>();
private cart: ICartItem[] = [];
currentShoppingCart = this.cartSource.asObservable();
constructor() {}
addMovie(movie: IMovie) {
let foundMovie = false;
for (let i = 0; i < this.cart.length; i++) {
if (movie.id === this.cart[i].movie.id) {
this.cart[i].amount++;
foundMovie = true;
}
}
if (!foundMovie) {
this.cart.push({movie, amount: 1});
}
this.cartSource.next(this.cart);
}
removeMovie(movie: IMovie) {
for (let i = 0; i < this.cart.length; i++) {
if (movie.id === this.cart[i].movie.id) {
this.cart[i].amount--;
} if (this.cart[i].amount < 1) {
this.cart.splice(i, 1);
}
}
this.cartSource.next(this.cart);
}
}
我希望项目包含电影数组,但是现在console.log(this.items);会给我“未定义”。