Mik*_*ike 6 javascript dependency-injection node.js nestjs
@Module({
providers: [AService]
exports: [AService]
})
export class AModule {
}
@Module({
imports: [AModule],
providers: [BService]
exports: [BService]
})
export class BModule {
}
Run Code Online (Sandbox Code Playgroud)
我的代码
@Module({
imports: [BModule],
providers: [CService]
})
export class CModule {
}
Run Code Online (Sandbox Code Playgroud)
如何AService
从我的代码覆盖/替换提供程序?(没有第三方库补丁)
根据我的评论,这就是您如何使用动态提供程序制作动态模块
export interface ProviderInterface {
handle(): void;
}
@Injectable()
class SomeHandlingProvider {
constructor(@Inject('MY_DYNAMIC_PROVIDER') private readonly dynamicProvider: ProviderInterface) {}
handle(): void {
this.dynamicProvider.handle();
}
}
@Module({})
export class AModule {
public static forRoot(provider: ProviderInstance): DynamicModule {
return {
module: AModule,
providers: [
{
provide: 'MY_DYNAMIC_PROVIDER',
useClass: provider,
},
SomeHandlingProvider,
],
};
}
}
Run Code Online (Sandbox Code Playgroud)
然后你可以像这样使用
class GenericDynamicProviderExample implements ProviderInterface {
handle(): void {
console.log('hello');
}
}
@Module({
imports: [
AModule.forRoot(GenericDynamicProviderExample),
],
})
export class BModule {}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1996 次 |
最近记录: |