javascript - App-wide variabler i Angular2 (RC5)
Jeg vil opprette en applikasjonsbred variabel som er tilgjengelig mellom ulike Angular2-komponenter og importerte moduler.
Jeg har sett på avhengighetsinjeksjon i min app.module og tenkte kanskje jeg kunne sette en klasse med en egenskap i det. Men med den nye Angular-RC5-utgivelsen, ser dette ut som en overkomplisering for det jeg ønsker å gjøre.
Alternativt tenkte jeg å bruke @Inputs og @Outputs for å kaskadere dataene og abonnere på endringer, men det ser ikke ut til å være mulig mellom moduler.
Jeg ville være veldig takknemlig for et forslag til den enkleste måten å gjøre dette på.
Når det gjelder min spesifikke applikasjon, har jeg en navbar-komponent som jeg vil vise på alle ruter bortsett fra én. Så jeg har den i min app.component-mal, med en *NgIf-betingelse, som jeg deretter ønsket å kunne endre fra forskjellige underkomponenter for å vise navbaren, uten å måtte legge navbar-komponenten inn i alle mine undermoduler og -komponenter (noe som blir vanskelig med komponenter som deles mellom moduler. Noen av rutene mine er importert i en modul.
Svar #1
Du kan opprette en delt tjeneste.
noe sånt:
import { Injectable } from '@angular/core';
@Injectable()
export class GenericService {
data:any = {};
}
og legg det deretter til i app.moduleen din.
etter det kan du injisere det i komponenten din og legge til data på det som vil være tilgjengelig fra alle komponentene dine.
Svar #2
Dette gjøres vanligvis ved å bruke en delt tjeneste.
For detaljer se
- https://angular.io/docs/ts/latest/cookbook/component-communication.html
- https://angular.io/docs/ts/latest/cookbook/rc4-to-rc5.html
- https://angular.io/docs/ts/latest/guide/ngmodule.html#!#q-why-it-is-bad
