Подтвердить что ты не робот

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]
})

Можно ли сделать это с помощью одного шага, чтобы автоматизировать это?

4b9b3361

Ответ 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 имя_службы