Vous pouvez accéder à Globals
à partir de n'importe quel point de votre application via Injection de dépendances Angular . Si vous voulez produire Globals.role
dans le modèle d'un composant, vous devez injecter la valeur Globals
par le biais du constructeur du composant comme n'importe quel service :
// hello.component.ts
import { Component } from '@angular/core';
import { Globals } from './globals';
@Component({
selector: 'hello',
template: 'The global role is {{globals.role}}',
providers: [ Globals ] // this depends on situation, see below
})
export class HelloComponent {
constructor(public globals: Globals) {}
}
J'ai fourni Globals
dans le HelloComponent
mais au lieu de cela, elle pourrait être fournie dans une HelloComponent's
parent ou même dans AppModule
. Cela n'aura pas d'importance jusqu'à ce que votre Globals
n'a que des données statiques qui ne peuvent pas être modifiées (disons, uniquement des constantes). Mais si ce n'est pas le cas et que, par exemple, différents composants/services peuvent vouloir modifier ces données, alors la fonction Globals
doit être un singleton . Dans ce cas, il doit être fourni au niveau le plus élevé de la hiérarchie où il va être utilisé. Disons que c'est AppModule
:
import { Globals } from './globals'
@NgModule({
// ... imports, declarations etc
providers: [
// ... other global providers
Globals // so do not provide it into another components/services if you want it to be a singleton
]
})
De plus, il est impossible d'utiliser var de la façon dont tu l'as fait, ça devrait être
// globals.ts
import { Injectable } from '@angular/core';
@Injectable()
export class Globals {
role: string = 'test';
}
Mise à jour
Enfin, j'ai créé un simple démo sur stackblitz où simple Globals
est partagé entre 3 composants et l'un d'entre eux peut changer la valeur de Globals.role
.
4 votes
export class Globals { var role = 'test'; }
<- c'est quoi ça ?0 votes
C'est censé être ma classe Globals dans laquelle je veux stocker mes variables globales. Par exemple la variable "role", qui pour l'instant devrait contenir la chaîne "test", juste pour tester si les variables globales fonctionnent.
0 votes
Ce n'est pas une écriture valide.
0 votes
Dois-je enlever le "var" ?
0 votes
Et si vous utilisiez
localStorage
?