Realmente lucho con la creación de variables globales en mi aplicación Angular 2.
Ya busqué en Google y leí muchas publicaciones en StackOverflow sobre esto durante las últimas 3 horas, sin embargo, parece que no puedo hacer que funcione. Realmente espero que pueda ayudarme y le pido disculpas por hacer esta pregunta.
Entonces tengo mi archivo llamado globals.ts , que se ve así:
import { Injectable } from "@angular/core";
@Injectable()
export class Globals {
var role = 'test';
}
Y quiero usar el rol de variable en mi vista HTML de mi componente de esta manera:
{{ role }}
Ya agregué el archivo globals.ts a mi app.module.ts de la siguiente manera:
providers: [
Globals
],
No importa lo que hice en este archivo, simplemente no funcionó. Lo que no quiero hacer es tener que importar el archivo globals.ts en cada componente manualmente, por lo que quiero usar la función de proveedores.
Realmente espero que puedas ayudarme y lo siento de nuevo.
Atentamente,
AE
export class Globals { var role = 'test'; }
<- ¿qué es eso?localStorage
?Respuestas:
Puede acceder a la
Globals
entidad desde cualquier punto de su aplicación a través de la inyección de dependencia angular . Si desea generarGlobals.role
valor en la plantilla de algún componente, debe inyectar aGlobals
través del constructor del componente como cualquier servicio:Proporcioné
Globals
en elHelloComponent
, pero en su lugar podría proporcionarse en algúnHelloComponent's
componente principal o incluso enAppModule
. No importará hasta queGlobals
solo tenga datos estáticos que no se puedan cambiar (digamos, solo constantes). Pero si no es cierto y, por ejemplo, diferentes componentes / servicios pueden querer cambiar esos datos, entoncesGlobals
debe ser un singleton . En ese caso, debe proporcionarse en el nivel superior de la jerarquía donde se utilizará. Digamos que esto esAppModule
:Además, es imposible usar var de la forma en que lo hizo, debería ser
Actualizar
Por fin, creé una demostración simple en stackblitz , donde
Globals
se comparte single entre 3 componentes y uno de ellos puede cambiar el valor deGlobals.role
.fuente
Yo uso el entorno para eso. Funciona automáticamente y no tiene que crear un nuevo servicio inyectable y lo más útil para mí, no es necesario importar a través del constructor.
1) Cree una variable de entorno en su entorno.
2) Importe environment.ts en el archivo * .ts y cree una variable pública (es decir, "env") para poder usarla en la plantilla html
3) Úselo en la plantilla ...
en * .ts ...
(o simplemente environment.isContentLoading en caso de que no lo necesite para la plantilla)
Puede crear su propio conjunto de globales dentro de environment.ts así:
e importar directamente estas variables (y)
fuente
environments/environment.ts
yenvironments/environment.prod.ts
que se reemplazan automáticamente.No se recomienda realmente, pero ninguna de las otras respuestas son variables realmente globales. Para una variable verdaderamente global, podría hacer esto.
Index.html
Componente o cualquier otra cosa en Angular
..cerca de la parte superior derecha después de las importaciones:
...luego:
fuente
Puede utilizar el objeto Ventana y acceder a él desde cualquier lugar. ejemplo window.defaultTitle = "mi título"; entonces puede acceder a window.defaultTitle sin importar nada.
fuente