Angular cli генерирует услугу и включает поставщика в один шаг
Можно создать службу с 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
![ПРЕДУПРЕЖДЕНИЕ Служба создается, но не предоставляется, она должна быть предоставлена для использования]()
Рядом с ним (и в соответствии с сообщением WARNING) я обычно добавляю его в раздел поставщика в app.module.ts с помощью текстового редактора:
@NgModule({
declarations: [
AppComponent,
...
],
imports: [
....
],
providers: [BackendApiService],
bootstrap: [AppComponent]
})
Можно ли сделать это с помощью одного шага, чтобы автоматизировать это?
Ответы
Ответ 1
Фактически, при создании сервиса можно предоставить услугу (или охрану, поскольку это также необходимо предоставить).
Команда следующая:
ng g s services/backendApi --module=app.module
Edit
Можно также предоставить модуль функций, вы должны указать путь к модулю, который вы хотели бы.
ng g s services/backendApi --module=services/services.module
Ответ 2
Angular 6+ Singleton Services
Рекомендуемый подход для одноэлементного сервиса для Angular 6 и выше:
import { Injectable } from '@angular/core';
@Injectable({
providedIn: 'root',
})
export class UserService {
}
Фактически, переключатель CLI --module
больше даже не существует для регистрации службы на уровне app
, поскольку ему больше не нужно изменять app.module.ts
.
Это создаст приведенный выше код без указания модуля.
ng g s services/user
Поэтому, если вы не хотите, чтобы ваш сервис был одноэлементным, вы должны удалить код providedIn
самостоятельно, а затем вручную добавить его в providers
для компонента или модуля с отложенной загрузкой. Не похоже, что в данный момент есть переключатель, чтобы не генерировать часть providedIn: 'root'
, поэтому вам нужно удалить его вручную.
Ответ 3
небольшое изменение в синтаксисе от принятого ответа для Angular 5 и Angular-Cli 1.7.0
ng g service backendApi --module=app.module
Ответ 4
Добавить службу в приложение Angular 4 с помощью Angular CLI
Служба Angular 2 - это просто функция javascript, а также связанные с ней свойства и методы, которые могут быть включены (через инъекцию зависимостей) в компоненты Angular 2.
Чтобы добавить новую службу Angular 4 в приложение, используйте команду ng g service serviceName
. При создании службы CLI Angular показывает ошибку:
![WARNING Service is generated but not provided, it must be provided to be used]()
Чтобы решить эту проблему, нам необходимо предоставить ссылку на службу src\app\app.module.ts
внутри providers
ввода метода @NgModule
.
Изначально код по умолчанию в службе:
import { Injectable } from '@angular/core';
@Injectable()
export class ServiceNameService {
constructor() { }
}
Служба должна иметь несколько общедоступных методов.
Ответ 5
Укажите пути
--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
Ответ 6
В Angular 5.12 и последней версии Angular CLI выполните
ng generate service my-service -m app.module
Ответ 7
В командной строке Перейти в папку проекта
и запустите: ng g s имя_службы