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