2017-09-04 29 views
0

私は自分のMOBILE POC(Cordova2/Angular2)でカート機能を作成しようとしています。 コンポーネント間でデータを共有するためのサービスを作成しました。コンポーネントAからアイテムを読み込み、コンポーネントBから読み込もうとしていますが、コンポーネントBのアイテムは表示されません。サービスに追加する必要はありますか?Angular2ページ間の可変変数またはグローバル変数の共有

import { Injectable } from '@angular/core';  
@Injectable()  
export class CartService { 
    private vijayCart: Array<any> = []; 
    GetCart() { 
     return this.vijayCart; 
    } 
    SetCart(item) { 
     this.vijayCart.push(item); 
    } 
} 

成分A:

addItemToCart(item) { 
    this.cartService.SetCart(item); 
    //this.cartService.vijayCart.push(item); 
    this.cartLenth = this.cartService.GetCart().length; 
} 

成分B:

ngOnInit(): void { 
     this.cartSer = this.cartService.GetCart(); 
    } 
+0

を見ることができる見ることが解決策の一つは、あなたのサービスでBehaviorSubject、それの観察可能なを作成し、両方のコンポーネントで、それに加入することです。あるいは、 '@ Input' /' @ Output'とEventEmitterを使ってアクションを処理してください。 – Vic

+0

BehaviorSubject - [CLICK](https://www.youtube.com/watch?v=k8hMfoNIo4Y)をご覧ください – Vic

+0

Ionicを使用していますか? – user2085143

答えて

1

すべては、あなたが不足している一つのことは、両方のコンポーネントにサービスを提供することで正しいです。 モジュールレベルでサービスを共有して、私のサービスがこれらの2つのコンポーネント間で共有されていると言う必要があります。

providers: [AppService], 

あなたがより詳細に行きたいと二つのモジュール間でデータを共有する方法を知りたい場合は、share data between tow module

行動対象を見ることができます

@NgModule({ 
    declarations: [ 
    AppComponent 
    ], 
    imports: [ 
    BrowserModule, 
    AppRoutingModule 
    ], 
    providers: [AppService], 
    bootstrap: [AppComponent] 
}) 
export class AppModule { } 

モジュールのコード全体 動作対象は、コンポーネント間でデータを共有するためのより良い方法であり、将来のデータ共有を処理します1つのサービスのデータ変更であり、他のサービスに通知します。

詳細にあなたがこのsharing data between components

関連する問題