javascript - 如何使用forwardRef()进行循环依赖?

标签 javascript typescript nestjs

如何使用forwardRef()进行循环依赖?我按照文档做了同样的事情,但没有成功,它给了我这个错误: GroupModule“imports”数组索引 [1] 处的模块未定义。

潜在原因:

范围 [AppModule -> EntityModule -> BranchModule] +91ms

最佳答案

当两个模块相互调用时,就会发生循环依赖,例如,如果我有一个动物模块和一个猫模型相互调用:

在animal.module.ts中:

import { forwardRef, Module } from '@nestjs/common';
import { AnimalController } from './animal.controller';
import { AnimalService }    from './animal.service';
import { AnimalRepository } from './animal.repository';

@Module({
    imports: [
        forwardRef(() => CatModule),
        
    ],
    controllers: [AnimalController],
    providers  : [AnimalService, AnimalRepository],
    exports    : [AnimalService],
})
export class AnimalModule { }

在cat.module.ts中:

import { forwardRef, Module } from '@nestjs/common';
import {CatController } from './cat.controller';
import { CatService }    from './cat.service';
import { CatRepository } from './cat.repository';

@Module({
    imports: [
        forwardRef(() => AnimalModule),
        
    ],
    controllers: [CatController],
    providers  : [CatService, CatRepository],
    exports    : [CatService],
})
export class CatModule { }

在animal.service.ts中:

export class AnimalService {

constructor(
   
    @Inject(forwardRef(() => CatService)) private readonly catService: CatService,
   

) {
   
}//rest of code here}

在cat.service.ts中:

export class CatService {

constructor(

    @Inject(forwardRef(() => AnimalService)) private readonly animalService: AnimalService,


) {

}//rest of code here}

关于javascript - 如何使用forwardRef()进行循环依赖?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64138396/

相关文章:

javascript - JSONP 和 XMLHttpRequest 问题

javascript - Angular 5 NullInjectorError : No provider for n

node.js - 无法使用 NestJS 注入(inject) winston 的记录器实例

NestJs - TypeORM 配置有效但不适用于 ConfigService

mongodb - typeorm:在新项目上创建的迁移无法识别实体 - "No changes in database schema were found - cannot generate a migration."

javascript - 有没有办法覆盖 Olark css?

Javascript 正则表达式模式捕获

javascript - Restangular:无法发布复杂的 json 参数?

javascript - 是否可以从 TypeScript 接口(interface)创建 "empty"对象?

javascript - Angular Material MatChipList - 如何在动态 FormArray 上使用它?