Angular:如何在父组件中注入concret类
我有一个共同的组成部分Angular:如何在父组件中注入concret类,angular,Angular,我有一个共同的组成部分 @组件({ 选择器:'mc common', ... }) 公共组件{ 构造函数(@Optional()@SkipSelf()私有只读mergingStrategy:mergingStrategy){ 如果(!this.mergingStrategy){ this.mergingStrategy=new NoopMergingStrategy(); } } ... } 以及另一个使用mc common @组件({ 选择器:“mc另一个”, 模板:` ... `, 供应商
@组件({
选择器:'mc common',
...
})
公共组件{
构造函数(@Optional()@SkipSelf()私有只读mergingStrategy:mergingStrategy){
如果(!this.mergingStrategy){
this.mergingStrategy=new NoopMergingStrategy();
}
}
...
}
以及另一个使用mc common
@组件({
选择器:“mc另一个”,
模板:`
...
`,
供应商:[{
提供:MergingStrategy,useClass:complementdMergingstrategy//或useValue:new complementdMergingstrategy()
}
})
另一种成分{
构造函数(私有只读mergingStrategy:mergingStrategy){
}
...
}
因此,当我调用另一个mc
时,mc common
将复杂的合并策略
作为MergingStrategy
的实例
一切都像这样正常工作。但我想要实现的是将复杂的能量策略的相同实例注入另一个组件而不是抽象,但继续在mc common
中使用抽象
比如:
另一个组件{
构造函数(私有只读mergingStrategy:ComplementdMergingStrategy){
}
...
}
这些战略:
抽象类策略{
合并(a,b):任何
}
类NoopMergingStrategy实现MergingStrategy{
合并(a,b):任何{
返回a;
}
}
类复杂化MergingStrategy实现MergingStrategy{
合并(a、b){
...
}
}
我希望我很清楚:)解决方案是useExisting
,并在前面声明复杂麦金森战略的实例
@组件({
选择器:“mc另一个”,
模板:`
...
`,
供应商:[
复杂的能源战略{
提供:Mergins策略,使用现有:复杂的能量策略
}]
})
另一种成分{
构造函数(私有只读merginStrategy:ComplementdMerginStrategy){
}
...
}
我猜您已经尝试过在“导出类…”定义上方使用@Injectable()注入MerginStrategy和/或使MerginStrategy复杂化,对吧?@Injectable()
不会改变任何东西