我正在开发一个电子商务应用,而且我很难创建一个单独的对象,我可以将其用作我的应用的购物车。
首先,我创建了一个服务:
import {Injectable} from '@angular/core';
import {Item} from '../models/item';
@Injectable()
export class CartService {
private items: Item[];
constructor() {
this.items = [];
}
public addToCart(item: Item): string {
...
}
public getItems(): Item[] {
return this.items;
}
}
然后在我的app.module.ts:
import { CartService } from '../services/cart.service';
@NgModule({
declarations: [
MyApp,
...
],
imports: [
...
],
bootstrap: [IonicApp],
entryComponents: [
MyApp,
...
],
providers: [
...
CartService
]
})
export class AppModule {}
现在我想将cartService.getItems作为单项数组,所以我这样做:
@IonicPage({
name: 'destaques-page'
})
@Component({
selector: 'page-destaques',
templateUrl: 'destaques.html'
})
export class DestaquesPage {
...
constructor(public navCtrl: NavController, db: AngularFireDatabase, private cart: CartService) {
...
console.log(this.cart.getItems.length);
}
...
}
在我希望访问该对象的每个页面中,但在每个页面中我都会得到一个全新的对象,这意味着我无法获得已经添加的所有不同内容。
我在这里缺少什么?
答案 0 :(得分:0)
您需要确保在重定向时未完全加载页面。好像页面再次加载,服务从内存中被销毁,项目再次初始化为[]。
理想情况下,您应该使用localStorage和您的服务
import {Injectable} from '@angular/core';
import {Item} from '../models/item';
@Injectable()
export class CartService {
private items: Item[];
constructor() {
try {
this.items = JSON.parse(localStorage.get("mycart")) as Item[];
} catch(err) {
this.items = [];
}
}
public addToCart(item: Item): string {
this.items.push(item);
localStorage.setItem("mycart", JSON.stringify(this.items));
}
public getItems(): Item[] {
return this.items;
}
}
我希望这会有助于事业