2017-02-03 4 views
2

Ich erstelle eine Demo-App in Angular 2 und steckte in dieser App fest. Ich möchte eine globale Variable/Objekt in der App wie $rootScope in eckigen verwenden. Bitte schlagen Sie mir vor, was zu tun ist, um dies zu erreichen? Derzeit verwende ich 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()); 

Der obige Code nicht der gesamte Code wird dies für das Verständnis ist, dass, was ich bin tun, um für dasselbe zu erreichen.

+0

Verwenden ein geteilter Service https://angular.io/docs/ts/latest/cookbook/component-communication.html#!#bidirectional-service –

+0

In meiner App. Ich verwende das Dashboard, das beim Start der App geladen wird. Aber ich möchte tun, im Dashboard gibt es einen Link "admin" und wollen diesen Link anzeigen, wenn Url anders sein würde als "/ admin", aber wenn die URL "/ admin" ist, dann will ich nicht um diesen Link zu zeigen. Das Problem ist, dass Dashboard nur einmal und im Dashboard geladen wird. * NgIf = "adminUrl! = '/ Admin'" Der Wert von adminUrl würde sich bei jeder Routenänderung ändern, aber hier (im Dashboard) behalten Sie den Wert. Bitte schlagen Sie vor, was ich tun kann? –

+0

versuchen Sie diese https://stackoverflow.com/questions/35985009/angular-2-what-isäquivalence-to-root-scope.A viel bessere Lösung – Harshakj89

Antwort

1

Sie können localStraogeService verwenden, um eine globale Variable/Objekt in der gesamten App allererst Sie localstorage in Ihrem Projekt von

npm install angular-2-local-storage 

dann in Ihrem baseComponent importieren installieren müssen, wenn Sie

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

dann injizieren nur im Konstruktor von BaseComponent

constructor(protected localStorageService: LocalStorageService) 

dann können Sie den Wert von localStorageService von

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

und bekommen bekommen und setzen von

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

Sie können auch die Dinge aus dem untenstehenden Link folgen localStorageServices zu erreichen

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

Dies ist nicht der beste Weg, wusste ich über das @ Hemant Kumar –

+0

ja ich stimme zu! dann solltest du mit SharedService gehen –