我找不到问题所在。我收到以下错误:
嵌套不能解析BService(?,AService)的依赖项。请 确保索引[0]处的参数在CModule中可用 上下文。
我有3个模块,A,B,C。
C应该能够使用B的服务,而B应该调用A的服务。
A和B具有TypeOrm导入,每个都有一个实体。
代码如下:
app.modules.ts:
@Module({
imports: [
TypeOrmModule.forRoot(),
CModule
]
})
export class AppModule {}
c.module.ts:
@Module({
imports: [BModule],
controllers: [CController],
providers: [BService]
})
export class CModule {}
b.module.ts:
@Module({
imports: [
AModule,
TypeOrmModule.forFeature([B], 'default')
],
providers: [BService],
exports: [AModule, BService]
})
b.entity.ts:
@Entity()
export class B {
@PrimaryGeneratedColumn()
id: number;
@Column()
name: string;
}
b.service.ts:
@Injectable()
export class BService {
constructor(
@InjectRepository(B, 'default')
private readonly bRepository: Repository<B>,
private readonly aService: AService
) {}
}
a.module.ts:
@Module({
imports: [
TypeOrmModule.forFeature([A], 'default')
],
providers: [AService],
exports: [AService]
})
export class AModule {}
a.entity.ts:
@Entity()
export class A {
@PrimaryGeneratedColumn()
id: number;
@Column()
name: string;
}
a.service.ts:
@Injectable()
export class AService {
constructor(
@InjectRepository(A, 'default')
private readonly aRepository: Repository<A>) {
}
}
答案 0 :(得分:1)
在您的CModule
中,您无需定义providers: [BModule]
,因为您将覆盖BModule
中给出的值。由于BModule
已经导出了BService
,因此除了将BModule
导入到CModule
中之外,您不需要做任何其他事情,那么您可以毫无问题地使用BService
。
旁注:您是否有任何理由在模块之间具有依赖性?在大多数情况下,如果可以避免导入其他模块(如果不必要),则可以使很多代码更易于使用。