page navigationend example change angular angular6

navigationend - page title angular 4



Servicios de Angular 6: includedIn: ''root'' vs CoreModule (3)

Con Angular 6, a continuación se muestra la forma preferida de crear servicios singleton:

import { Injectable } from ''@angular/core''; @Injectable({ providedIn: ''root'', }) export class UserService { }

Desde Angular doc: cuando proporciona el servicio en el nivel raíz, Angular crea una única instancia compartida de HeroService e inyecta en cualquier clase que lo solicite. El registro del proveedor en los metadatos de @Injectable también permite que Angular optimice una aplicación eliminando el servicio si resulta que no se utiliza después de todo.

También,

providers: [ // no need to place any providers due to the `providedIn` flag... ]

Entonces, ¿eso significa que ya no necesitamos CoreModule ? Podemos importar servicios y otros módulos comunes directamente en AppModule.


¿Y qué pasa con los interceptores y guardias? Estas cosas pueden ser globales, supongo. Estoy de acuerdo con su consideración de que CoreModule no tiene declaraciones y solo servicios puros, pero creo que los Guardias e Interceptores también deben ser considerados.


Eso sería cierto si el CoreModule solo contuviera servicios. Sin embargo, incluye otras cosas como componentes de un solo uso.

De Angular Docs:

Recopile componentes de uso único de toda la aplicación en CoreModule. Importa una vez (en AppModule) cuando se inicia la aplicación y nunca la importes a ningún otro lugar. (por ejemplo, NavComponent y SpinnerComponent).


Todavía mantendría CoreModule para componentes de uso único e interceptores Http, con la propiedad providedIn ahora es la forma recomendada de registrar servicios singleton, solo por claridad pondría todos mis servicios singleton en el directorio core / services