Использование декоратора класса @Injectable на сервисе, предоставляемом модулем @Global (в официальной документации)

Вопросы о ConfigService в документации: https : // docs .nestjs.com / Technics / configuration # service

Смотрите определение класса там:

export class ConfigService { /* ... */ }

Почему нет декоратора @Injectable? Есть причина или просто ошибка? Имеет ли декоратор @Injectable какое-либо влияние на то, что модуль, который предоставляет ConfigService, может быть @Global?


person Mateusz    schedule 26.05.2019    source источник


Ответы (1)


декоратора @Injectable нет, потому что этот класс используется как настраиваемый поставщик. Смотрите, как использовать:

{
  provide: ConfigService,
  useValue: new ConfigService(`${process.env.NODE_ENV}.env`),
},

В этом случае вы можете указать токен и значение, которое хотите использовать, здесь configService создается вручную, а не системой DI.

Когда вы используете декоратор @Injectable, вы сообщаете nestjs, что этот класс должен быть создан фреймворком.

Надеюсь, это поможет вам понять.

person Adrien De Peretti    schedule 27.05.2019
comment
Итак, здесь мы создаем экземпляр класса обслуживания уже в модуле, поэтому декоратор Injectable не применяется. Я тоже попал в эти статьи: docs.nestjs.com/fundamentals/custom-providers и docs.nestjs.com/providers#custom-providers Thanx @adrien -де-перетти, это было полезно. - person Mateusz; 29.05.2019
comment
С удовольствием, если ответ поможет вам, вы можете отметить его как решенное, чтобы его увидели все, если у них есть тот же вопрос. Спасибо - person Adrien De Peretti; 29.05.2019
comment
Вы должны иметь возможность считать ответ действительным - person Adrien De Peretti; 30.05.2019