订阅后,为什么我的可观察对象仍未定义?

时间:2019-05-16 16:52:20

标签: angular service observable subscription interaction

我正在创建一个简单的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);会给我“未定义”。

0 个答案:

没有答案