如何将多个值传递给 angular 5 observable?

How to pass multiple values to angular 5 observable?

我每天都在学习 angular,但我遇到了一个问题。我在一个组件中有 3 个值,我需要将它们传递给另一个组件。我对可观察和订阅有基本的了解,但我是用 1 个参数完成的。现在我要广播3个值

这是我的购物车代码。

additem(itemText){
  this.cart.push(itemText);
  this.itemscount = this.cart.length;
  this._data.changeCart(this.cart);
}

当我点击一个产品时,这个函数调用并将购物车数组发送到 observable 并在那里广播购物车数组

export class DataService {

    private cart = new BehaviorSubject<any>([]);
    cast = this.cart.asObservable();

    constructor() { }

    changeCart(item_param) {
        this.cart.next(item_param);
        //console.log(this.cart);
    }

}

现在我需要将 3 个值传递给 observable,但我不知道该怎么做,因为我读过我们只能将一个值传递给 observable。 我有一个想法,将所有值包装在一个数组中并传递该数组,但我对此进行了搜索,但找不到如何在 angular 中的单个数组中存储多个值。

如有帮助,将不胜感激appreciated.Thanks

以下是如何使其成为对象并将其用于多个值

export class DataService {

    private cartObject = new BehaviorSubject<Object>({});
    cartObjectInfo = this.cartObject.asObservable();

    constructor() { }

    changeCart(cartObject) {
        this.cartObject.next(cartObject);
    }
}

首先是获取BehaviourSubject中的值

this.data.cartObjectInfo.subscribe(cartObject => {
   if(cartObject) this.cartObject = cartObject; 
});
this.data.changeCart({//make the full object here});

你可以像这样制作一个对象:

a = 5;
b = 'sss';
c = new Date();

objToPass = { a: a, b: b, c: c };

稍后,您可以访问 objToPass.a、objToPass.b 等对象属性

这是构建 JS 对象的标准方式。