javascript - generate - Cli angular genera un servicio e incluye al proveedor en un solo paso
ng generate service example (6)
¿Es posible generar un servicio con cli angular y agregarlo como proveedor en app.module.ts en un solo paso o usando una opción especial en el comando ng g service ?
Cuando una ejecución:
$ ng g service services/backendApi
installing service
create src/app/services/backend-api.service.spec.ts
create src/app/services/backend-api.service.ts
WARNING Service is generated but not provided, it must be provided to be used
Junto a él (y de acuerdo con el mensaje de ADVERTENCIA), generalmente lo agrego a la sección del proveedor en app.module.ts usando el editor de texto:
@NgModule({
declarations: [
AppComponent,
...
],
imports: [
....
],
providers: [BackendApiService],
bootstrap: [AppComponent]
})
¿Es posible hacerlo con un solo paso, para automatizar esto?
Especificar caminos
--app
--one
one.module.ts
--services
--two
two.module.ts
--services
Crear servicio con nueva carpeta en el módulo UNO
ng g service one/services/myNewServiceFolderName/serviceOne --module one/one
--one
one.module.ts // service imported and added to providers.
--services
--myNewServiceFolderName
serviceOne.service.ts
serviceOne.service.spec.ts
Angular 6+ Servicios Singleton
El enfoque recomendado para un servicio singleton para Angular 6 y más allá es:
import { Injectable } from ''@angular/core'';
@Injectable({
providedIn: ''root'',
})
export class UserService {
}
De hecho, el
--module
CLI
--module
github.com/angular/angular-cli/wiki/generate-service
para registrar un servicio a nivel de
app
porque ya no necesita modificar
app.module.ts
.
Esto creará el código anterior, sin necesidad de especificar un módulo.
ng g s services/user
Entonces, si
no
desea que su servicio sea un singleton, debe eliminar el código
providedIn
usted mismo, y luego agregarlo manualmente a los
providers
para un componente o módulo con carga lenta.
No parece que actualmente haya un interruptor para no generar la parte
providedIn: ''root''
por lo que debe eliminarla manualmente.
En Angular 5.12 y la última CLI angular, haga
ng generate service my-service -m app.module
En realidad, es posible proporcionar el servicio (o protección, ya que eso también debe proporcionarse) al crear el servicio.
El comando es el siguiente ...
ng gs services/backendApi --module=app.module
Editar
También es posible proporcionar a un módulo de características, debe darle la ruta al módulo que desea.
ng gs services/backendApi --module=services/services.module
ligero cambio en la sintaxis de la respuesta aceptada para Angular 5 y angular-cli 1.7.0
ng g service backendApi --module=app.module
Agregue un servicio a la aplicación Angular 4 usando Angular CLI
Un servicio Angular 2 es simplemente una función de JavaScript junto con sus propiedades y métodos asociados, que se pueden incluir (mediante inyección de dependencia) en los componentes de Angular 2.
Para agregar un nuevo servicio Angular 4 a la aplicación, use el comando
ng g service serviceName
.
Al crear el servicio, la CLI angular muestra un error:
Para resolver esto, debemos proporcionar la referencia del servicio a la entrada
src/app/app.module.ts
dentro de los
providers
del método
@NgModule
.
Inicialmente, el código predeterminado en el servicio es:
import { Injectable } from ''@angular/core'';
@Injectable()
export class ServiceNameService {
constructor() { }
}
Un servicio debe tener algunos métodos públicos.