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
Другие вопросы по тегам