如何将多个值传递给角度5可观察?

时间:2018-02-08 08:04:34

标签: angular typescript angular5

我正在日复一日地学习角度,但我遇到了问题。我在一个组件中有3个值,我需要将它们传递给另一个组件。我对observable和subscription有基本的了解,但我用1参数完成了它。现在我想播放3个值

这是我的购物车代码。

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

当我点击一个产品时,这个函数调用它并将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。 我有一个想法将所有值包装在一个数组中并传递该数组,但我搜索了这个但却找不到如何在单个数组中以角度存储多个值。

任何帮助都将受到高度赞赏。谢谢

2 个答案:

答案 0 :(得分:5)

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

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

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

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

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

答案 1 :(得分:1)

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

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