Я работаю над веб-приложением электронной коммерции, используя Angular2.
Я сохранил упорядоченную информацию в сеансе.
addToCart(productId:string,noOfItems:number):void{
let itemCounts;
let selectedItems=[];
if(sessionStorage.hasOwnProperty("cartItemCount"))
{
itemCounts = parseInt(sessionStorage.getItem("cartItemCount"));
itemCounts++;
sessionStorage.setItem("cartItemCount",itemCounts.toLocaleString());
}else{
sessionStorage.setItem("cartItemCount","1")
}
this._addtocartService.updateCount.emit("itemAdded");
this._notificationService.success("Success","item added to Cart");
let item={
productId:productId,
productName:this.productDetail.name,
packageName:this.selectedPackage.packageName,
Rate:this.selectedPackage.price,
unit:this.selectedPackage.unitPerQuantity,
quantity:noOfItems,
packageId:this.selectedPackage._id,
owner:this.owner._id
}
if(sessionStorage.getItem("CartContent") != undefined)
{
let test = JSON.parse(sessionStorage.getItem("CartContent"));
for(let loop=0;loop<test.length;loop++) {
if(test[loop].productId==productId) {
}
}
}
if(sessionStorage.hasOwnProperty("CartContent")) {
selectedItems=JSON.parse(sessionStorage.getItem("CartContent"));
}
selectedItems.push(item);
sessionStorage.setItem("CartContent",JSON.stringify(selectedItems));
console.log(sessionStorage.getItem("CartContent"));
}
У меня есть компонент cartItem, в котором должна отображаться вся заказанная информация. В этом компоненте я получаю заказанные элементы из сеанса, подобные этому.
export class cartItemComponent{
private Orders:any;
private total:number;
constructor(private dataService:DataService,
private loggerService:LoggerService){
this.getCartContent();
this.calculatePrice();
}
getCartContent(){
this.Orders = JSON.parse(sessionStorage.getItem("CartContent"));
console.log("from Orders");
console.log(this.Orders);
var products = JSON.parse(sessionStorage.getItem("product"));
}
calculatePrice() {
let i;
for (i = 0; i < this.Orders.length; i++) {
console.log("this is order");
console.log(this.Orders[i]);
this.dataService.post("order/prices", this.Orders[i])
.subscribe(res => {
console.log(res);
console.log(this.Orders[i]);
this.total+=res.totalPrice;
this.Orders[i]['totalPrice'] = res.totalPrice;
});
console.log("Total is " + this.total);
if(i==this.Orders.length){
this.loggerService.log(this.Orders,"green");
}
// setTimeout(()=>{
// for (i=0;i<this.Orders.length;i++){
// this.Orders[i]['totalPrice']=233;
// }
//
// console.log("inside timeout");
// },3000);
}
}
//}
}
Я передаю эту информацию в API из метода calculatePrice(), чтобы получить только общую стоимость каждого типа предметов из API. Но внутри этой подписки this.Orders[i] не определено, и я не могу добавить новый ключ json this.Orders[i]['totalPrice'] и его значение внутри него.
Затем я должен отобразить эту информацию в таблице, используя оператор цикла.
Помощь будет оценена