我正在日复一日地学习角度,但我遇到了问题。我在一个组件中有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。 我有一个想法将所有值包装在一个数组中并传递该数组,但我搜索了这个但却找不到如何在单个数组中以角度存储多个值。
任何帮助都将受到高度赞赏。谢谢
答案 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});