2017-02-03 18 views
2

私はAngular 2でデモアプリを作成していますが、私はこのアプリで立ち往生しました。私は角度の$rootScopeのように、アプリケーション全体でグローバル変数/オブジェクトを使用したい。これを達成するために何をすべきか教えてください。 現在、私はEventEmitterを使用しています。

app.component.ts:

<a routerLink="/admin" routerLinkActive="active" style="float:right;" 
    *ngIf="currentUrl != '/admin'" (adminUrl)="setUrl($event)" >Admin-{{currentUrl}}</a> 

`@Output() adminUrl:String;` 

heroes.component.ts:上記のコードは、これは理解のために、すべてのコード

@Output() adminUrl = new EventEmitter(); 
    this.adminUrl.emit(this.router.location.path()); 

されないが、私はどのようなもの同じことを達成するためにやっている。

+0

使用localStorageServicesを達成するには、以下のリンクから物事をたどることができます取得し、

this.localStorageService.set('sessionData',{Object}); 

によってlocalStorageServiceの値を設定し、

this.seesionDetails = this.localStorageService.get('sessionData'); 

によって得ることができます共有サービスhttps://angular.io/docs/ts/latest/cookbook/component-communication.html#!#bidirectional-service –

+0

私のアプリでは、私はアプリが起動されると一度読み込まれているダッシュボードを使用しています。しかし、私はダッシュボードで「admin」というリンクがあり、URLが「/ admin」以外のときにこのリンクを表示したいと思っていますが、URLが「/ admin」になると私は望みませんこのリンクを表示します。問題はDashboardが一度だけロードされ、ダッシュボードに* ngIf = "adminUrl!= '/ admin'"の値がすべてのルート変更で変更されますが、ダッシュボードの値は同じままです。私ができることをお勧めしますか? –

+0

これを試してみてくださいhttps://stackoverflow.com/questions/35985009/angular-2-what-is-equivalent-to-root-scope .Aもっと良い解決策 – Harshakj89

答えて

1

あなたが

を持っている場合は、あなたのbaseComponentにインポートし、あなたが

npm install angular-2-local-storage 

して、プロジェクトでのlocalStorageをインストールする必要があり、すべての最初のアプリ 全体でグローバル変数/オブジェクトを使用するlocalStraogeServiceを使用することができます

import { LocalStorageService } from 'angular-2-local-storage'; 

次いでだけBaseComponent

constructor(protected localStorageService: LocalStorageService) 
のコンストラクタに注入その後、

あなたはまた、

https://www.npmjs.com/package/angular-2-local-storage 
+0

これは最良の方法ではありません、私はそれについて知っていました@ Hemant Kumar –

+0

はい私は同意します!あなたはSharedServiceに行くべきです –

関連する問題