声明装饰器
- @Module
- @Controller 声明模块 controller
- @Injectable 声明模块 provider
注入方式
/controller 文件
1.构造器注入
import { Controller, Get } from '@nestjs/common';
import { AppService } from './app.service';
@Controller()
export class AppController {
constructor(private readonly appService: AppService)
@Get()
getHello(): string {
console.log(this.cat);
return this.appService.getHello();
}
}
2.属性注入
import { Controller, Get, Inject} from '@nestjs/common';
import { AppService } from './app.service';
@Controller()
export class AppController {
@Inject(AppService)
private readonly appService: AppService;
@Get()
getHello(): string {
console.log(this.cat);
return this.appService.getHello();
}
}
例子:注入token
/app.module.ts
import { Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';
// @Module声明模块
@Module({
imports: [],
controllers: [AppController],
providers: [
AppService,
// 1.注入token 通过 useFactory、useValue 等方式声明 provider
{
provide: 'Cat',
useFactory() {
return {
name: '茶茶',
};
},
},
],
})
export class AppModule {}
- 第一种 @Inject()
import { Controller, Get, Inject } from '@nestjs/common';
import { AppService } from './app.service';
@Controller()
export class AppController {
@Inject(AppService)
private readonly appService: AppService;
@Inject('Cat')
private readonly cat: Record<string, any>;
@Get()
getHello(): string {
console.log(this.cat);
return this.appService.getHello();
}
}
- 第二种 @Optional()
import { Controller, Get, Inject, Optional } from '@nestjs/common';
import { AppService } from './app.service';
@Controller()
export class AppController {
@Optional()
@Inject('Cat')
private readonly cat: Record<string, any>;
constructor(@Optional() private readonly appService: AppService) {}
@Get()
getHello(): string {
console.log(this.cat);
return this.appService.getHello();
}
}
结果
全局声明 任意注入 @Global()
模块名.module.ts
import { Global, Module } from '@nestjs/common';
import { AaaService } from './aaa.service';
import { AaaController } from './aaa.controller';
@Global()
@Module({
controllers: [AaaController],
providers: [AaaService],
})
export class AaaModule {}