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()
不会改变任何东西