Angular Cli генерирует услугу и включает провайдера в один шаг
Можно сгенерировать сервис с угловым кликом и добавить его в качестве провайдера в app.module.ts за один шаг или с помощью специальной опции в команде ng g service?
Когда выполнить:
$ 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
Рядом с ним (и согласно сообщению ПРЕДУПРЕЖДЕНИЕ) я обычно добавляю его в раздел провайдера на app.module.ts с помощью текстового редактора:
@NgModule({
declarations: [
AppComponent,
...
],
imports: [
....
],
providers: [BackendApiService],
bootstrap: [AppComponent]
})
Можно сделать это за один шаг, автоматизировать это?
10 ответов
На самом деле, можно предоставить услугу (или охрану, поскольку это также необходимо предоставить) при создании службы.
Команда следующая...
ng g s services/backendApi --module=app.module
редактировать
Можно также указать функциональный модуль, вы должны указать ему путь к модулю, который вы хотите.
ng g s services/backendApi --module=services/services.module
Angular 6 Singleton Services
Рекомендуемый подход для одноэлементного сервиса для Angular 6:
import { Injectable } from '@angular/core';
@Injectable({
providedIn: 'root',
})
export class UserService {
}
Итак --module
Переключатель даже не существует для регистрации службы на app
уровень, потому что CLI не нужно изменять app.module.ts
больше.
Это создаст вышеуказанный код, без необходимости указывать модуль.
ng g s services/user
Поэтому, если вы не хотите, чтобы ваш сервис был единичным, вы должны удалить providedIn
закодируй себя Не похоже, что в данный момент есть переключатель, чтобы не создавать его.
Похоже, в Angular v11 и выше у нас больше нет опции «s»:
ng g service services/backendApi
или вот так:
ng g service services/backendApi --flat --skipTests=true
Укажите пути
--app
--one
one.module.ts
--services
--two
two.module.ts
--services
Создать Сервис с новой папкой в модуле ОДИН
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 5 и Angular-Cli 1.7.0
ng g service backendApi --module=app.module
ng generate service userService
//shorthand for creating service
ng g s serviceName
** Когда вы запускаете эту команду, она автоматически регистрируется в массиве провайдеров.**
providers: [
UserService
]
В Angular 5.12 и последней версии Angular CLI выполните
ng generate service my-service -m app.module
Добавьте сервис в приложение Angular 4 с помощью Angular CLI
Служба Angular 2 - это просто функция javascript вместе со связанными свойствами и методами, которые могут быть включены (посредством внедрения зависимостей) в компоненты Angular 2.
Чтобы добавить новый сервис Angular 4 в приложение, используйте команду ng g service serviceName
, При создании сервиса Angular CLI выдает ошибку:
Чтобы решить эту проблему, нам нужно предоставить сервисную ссылку на src\app\app.module.ts
внутри providers
ввод @NgModule
метод.
Изначально код по умолчанию в сервисе:
import { Injectable } from '@angular/core';
@Injectable()
export class ServiceNameService {
constructor() { }
}
Служба должна иметь несколько открытых методов.
В командной строке перейдите в папку проекта и запустите: ng g s servicename
Запустите приведенный ниже код в Терминале
Makeure Вы находитесь в папке своего проекта в терминале
ng g s servicename --module=app.module