Система естественного ввода-вывода Nest осуществляет внедрение зависимостей через constructor
. Внедрение значения обычно выглядит следующим образом:
@Injcetable()
export class SomeAwesomeClass {
constructor(private readonly somethingService: SomethingService) {}
}
Nest вычисляет, что вы вводите через имя класса, много размышляя. Если по какой-то причине вам нужно сделать инъекцию в свойство , вы можете сделать что-то вроде:
@Injectable()
export class SomeAwesomeClass {
@Inject()
private somethingService: SomethignService;
}
И Nest должен быть в состоянии разрешить инъекцию хотя обычно внедрение на основе конструктора предпочтительнее, так как оно более надежно и стандартно подходит для большинства приложений Nest.
Убедитесь, что в метаданных вашего модуля вы также экспортируете поставщика, а затем импортируете модуль поставщика в модуль, в который будет введен поставщик. Например:
@Module({
providers: [SomethingService],
exports: [SomethingService],
})
export class SomethingModule {}
@Module({
imports: [SomethingModule],
providers: [OtherService],
})
export class OtherModule {}
@Injectable()
export class OtherService {
constructor(private readonly somethingService: SomethingService) {}
}