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

Relaterte artikler