2017-10-03 6 views
0

私は電子商取引アプリケーションで作業しています。私は自分のアプリのショッピングカートとして使用できるシングルトンオブジェクトを作成するのに苦労しています。アクセスしたすべてのオブジェクトが新しいオブジェクトを返します

まず、私はサービスを作成しました:

私app.module.tsで、その後
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; 
    } 
} 

import { CartService } from '../services/cart.service'; 

@NgModule({ 
    declarations: [ 
    MyApp, 
    ... 
    ], 
    imports: [ 
    ... 
    ], 
    bootstrap: [IonicApp], 
    entryComponents: [ 
    MyApp, 
    ... 
    ], 
    providers: [ 
    ... 
    CartService 
    ] 
}) 
export class AppModule {} 

は今、私はアイテムのシングルトン配列としてcartService.getItemsを持ちたいです、だから私はそうする:

すべてのページにアクセスするが、私はそのオブジェクトにアクセスしたいが、それぞれ1つの新しいオブジェクトを得ることができる。私がすでに追加したすべてのアイテムがあります。

私はここで何が欠けていますか?

+0

を助ける願っていますあなたのサービス

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

と、のlocalStorageを使用する必要がありますと呼ばれる? – Skeptor

+0

質問を編集して 'DestaquesPage'クラス/コンポーネントのクラスデコレータを含めることはできますか?私はそこに 'CartService'を持つ' providers'セクションを持っていないことを知りたいと思います。 –

+0

@Skeptorどのコンストラクタにログインしてもらいたいですか? DestaquesPageまたはapp.component.tsのいずれか? – Rob

答えて

0

リダイレクト中にページが完全に読み込まれていないことを確認する必要があります。ページが再びロードされるように、サービスはメモリから破壊され、項目は[]に再び初期化されます。

理想的には、私は、これは理想的には、それは、いけないあなたは、コンストラクタでコンソールログを入れてなかったし、そのは、取得回数を確認原因

関連する問題