Het is mogelijk om een dienst te genereren met angular cli en deze toe te voegen als een providerin de app.module.tsin een enkele stap of met behulp van een speciale optie in de ng g servicecommando?
Wanneer een uitvoering:
$ 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
Daarnaast (en volgens het WAARSCHUWINGsbericht) voeg ik het meestal toe aan de sectie providerop app.module.tsmet behulp van de teksteditor:
@NgModule({
declarations: [
AppComponent,
...
],
imports: [
....
],
providers: [BackendApiService],
bootstrap: [AppComponent]
})
Het is mogelijk om het in één stap te doen, om dit te automatiseren?
Antwoord 1, autoriteit 100%
Eigenlijk is het mogelijk om de service te verlenen (of te bewaken, aangezien dat ook moet worden geleverd) bij het maken van de service.
Het commando is het volgende…
ng g s services/backendApi --module=app.module
Bewerken
Het is ook mogelijk om een functiemodule te voorzien, u moet deze het pad naar de gewenste module geven.
ng g s services/backendApi --module=services/services.module
Antwoord 2, autoriteit 56%
Angular 6+ Singleton Services
De aanbevolen aanpakvoor een singleton-service voor Angular 6 en hoger is:
import { Injectable } from '@angular/core';
@Injectable({
providedIn: 'root',
})
export class UserService {
}
In feite doet de CLI --module
-switch niet bestaat niet eens meervoor het registreren van een dienst op app
niveau omdat het niet meer nodig is om app.module.ts
aan te passen.
Hiermee wordt de bovenstaande code gemaakt, zonder dat u een module hoeft op te geven.
ng g s services/user
Dus als u nietwilt dat uw service eenmalig is, moet u de providedIn
-code zelf verwijderen – en deze vervolgens handmatig toevoegen aan providers
voor een component of lui geladen module. Het lijkt erop dat er momenteel geen optie is om het providedIn: 'root'
-gedeelte niet te genereren, dus je moet het handmatig verwijderen.
Antwoord 3, autoriteit 2%
Geef paden op
--app
--one
one.module.ts
--services
--two
two.module.ts
--services
Maak Servicemet nieuwe map in module ONE
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
Antwoord 4, autoriteit 2%
kleine verandering in syntaxis van het geaccepteerde antwoord voor Angular 5 en angular-cli 1.7.0
ng g service backendApi --module=app.module
Antwoord 5
Voeg een service toe aan de Angular 4-app met Angular CLI
Een Angular 2-service is gewoon een javascript-functie, samen met de bijbehorende eigenschappen en methoden, die kunnen worden opgenomen (via afhankelijkheidsinjectie) in Angular 2-componenten.
Gebruik het commando ng g service serviceName
om een nieuwe Angular 4-service aan de app toe te voegen. Bij het maken van de service geeft de Angular CLI een fout weer:
Om dit op te lossen, moeten we de servicereferentie verstrekken aan de src\app\app.module.ts
binnen de providers
-invoer van @NgModule
methode.
Aanvankelijk is de standaardcode in de service:
import { Injectable } from '@angular/core';
@Injectable()
export class ServiceNameService {
constructor() { }
}
Een service moet een paar openbare methoden hebben.
Antwoord 6
Doe in Angular 5.12 en de nieuwste Angular CLI
ng generate service my-service -m app.module
Antwoord 7
Het lijkt erop dat we in Angular v11 en hoger geen optie “s” meer hebben:
ng g service services/backendApi
of zo:
ng g service services/backendApi --flat --skipTests=true
Antwoord 8
Ga in de opdrachtprompt naar de projectmap en voer het volgende uit:
ng g s servicename
Antwoord 9
voer de onderstaande code uit in Terminal
zorg ervoor dat u zich in uw projectmap in terminal bevindt
ng g s servicename --module=app.module