抽象类的Angular injector.get



在我的angular项目中,我有许多组件:每个组件都有一个提供程序。提供者是一个自定义服务,它扩展了一个抽象类。这些组件中的每一个都可以打开一个对话框(用MatDialog打开(,我想用injector.get获取组件的提供程序,但如何用抽象类来实现这一点?示例:

@Component({
providers: [FirstClass] // this extends BaseClass
})
export class MyComponent{}
@Component({
providers: [SecondClass] // this extends BaseClass
})
export class SecondComponent{}

从对话框中,我想做这样的事情:

injector.get<BaseClass>(BaseClass)

但我注意到这是不可能的,所以有没有其他方法可以让他们的提供者拥有那个抽象类?

提前谢谢。

在您的案例中,BaseClass令牌用于注入实例。因此,你需要用这个代币注册一些东西

providers: [{
provide: BaseClass,
useClass: SecondClass
}]

或者,你可以通过几个代币使你的类可以注射

providers: [
SecondClass,
{
provide: BaseClass,
useExisting: SecondClass
}
]

在第二个版本中,您可以使用BaseClassSecondClass令牌注入Second类

最新更新