Является ли `поставщики: [ MyService ]` такими же, как `поставщики: [{обеспечить: MyComponent, useClass: MyComponent }]`

Я читаю ng-book на угловой 2 ревизии 47 стр. 250 и там есть следующий отрывок:

Когда мы помещаем сам класс в список провайдеров следующим образом:

providers: [ MyService ] 

Это говорит Angular, что мы хотим предоставлять единый экземпляр MyService всякий раз, когда MyService вводится. Поскольку этот шаблон очень распространен, сам класс является сокращенной записью для следующей эквивалентной конфигурации:

providers: [
    { provide: MyComponent, useClass: MyComponent }
]

Это опечатка и что должно быть в виду:

providers: [
    { provide: MyService, useClass: MyService }
]

3 ответа

Решение

Это опечатка, так как вы не можете использовать компоненты в качестве провайдеров, вот официальные документы

Класс Provider и предоставленный объектный литерал. Мы записали массив поставщики следующим образом:

providers: [Logger]

На самом деле это сокращенное выражение для регистрации поставщика с использованием литерала объекта поставщика с двумя свойствами:

[{ provide: Logger, useClass: Logger }]

Первый - это токен, который служит ключом как для определения значения зависимости, так и для регистрации провайдера.

Второй - это объект определения провайдера, который мы можем рассматривать как рецепт для создания значения зависимости. Есть много способов создать значения зависимостей... и много способов написать рецепт

Да, это то же самое. Когда тип передается provide а также useClass то же самое, то это эквивалентно просто передать type,

Просто намек. Предоставление компонента (MyComponent) обычно не имеет смысла.

Да, они оба одинаковы. Когда вы пишете provider: [MyService] angular расширяет это до [{provide: MyService, useClass: MyService}], где первый параметр обеспечивает: MyService будет работать как токен внедрения зависимостей, который будет работать как ключ для поиска «MyService» и второй параметр useClass: MyService создаст зависимость от существующего класса сервиса MyService

Другие вопросы по тегам