一、注入形式
lazy.module.ts
import { Module } from '@nestjs/common';
import { LazyService } from './lazy.service';
import { LazyController } from './lazy.controller';
@Module({
controllers: [LazyController],
providers: [LazyService],
exports: [LazyService],
})
export class LazyModule {}
lazy.service.ts
import { Injectable } from '@nestjs/common';
@Injectable()
export class LazyService {
findAll() {
return `This action returns all lazy`;
}
}
keyword.controller.ts
import {
Controller,
Get,
Inject,
} from '@nestjs/common';
import { LazyModuleLoader } from '@nestjs/core';
import { LazyService } from '../lazy/lazy.service';
@Controller('keyword')
export class KeywordController {
@Inject()
private lazyModuleLoader: LazyModuleLoader;
@Get()
async findOne() {
const { LazyModule } = await import('../lazy/lazy.module');
const moduleRef = await this.lazyModuleLoader.load(() => LazyModule);
const lazyService = moduleRef.get(LazyService);
return lazyService.findAll();
}
}
二、app实例获取
const lazyModuleLoader = app.get(LazyModuleLoader);