Angular 扩展抽象类的ContentChild
我有两个不同的组件,它们扩展了一个公共组件Angular 扩展抽象类的ContentChild,angular,children,Angular,Children,我有两个不同的组件,它们扩展了一个公共组件 AComponent extends BaseComponent {} BComponent extends BaseComponent {} 还有第三个组件具有ng内容 <wrapper> <a-component></a-component> <b-component></b-component> </wrapper> 我不想创建具有特定类型(A组件、B组件)的Co
AComponent extends BaseComponent {}
BComponent extends BaseComponent {}
还有第三个组件具有ng内容
<wrapper>
<a-component></a-component>
<b-component></b-component>
</wrapper>
我不想创建具有特定类型(A组件、B组件)的ContentChild 您可以将其用作解决方法
按如下方式定义组件
@组件({
选择器:“a组件”,
templateUrl:“./a.component.html”,
样式URL:['./a.component.css'],
提供程序:[{provide:BaseComponent,useExisting:AComponent}]
})
导出类AComponent扩展BaseComponent实现OnInit{
构造函数(){
超级();
console.log(“a created”);
}
ngOnInit(){}
}
及
@组件({
选择器:“b组件”,
templateUrl:“./b.component.html”,
样式URL:['./b.component.css'],
提供程序:[{provide:BaseComponent,useExisting:BComponent}]
})
导出类BComponent扩展BaseComponent实现OnInit{
构造函数(){
超级();
console.log(“b已创建”);
}
ngOnInit(){}
}
其中BaseComponent
为
导出抽象类BaseComponent{}
在包装器组件中使用它,如下所示
@组件({
选择器:“包装器”,
templateUrl:'./wrapper.component.html',
样式URL:['./wrapper.component.css']
})
导出类包装器组件实现OnInit,AfterContentInit{
@ContentChildren(BaseComponent)组件;
构造函数(){}
ngOnInit(){}
ngAfterContentInit(){
log(“组件:”,this.components.length);
}
}
这是一个正在运行的演示您能提供一个复制吗?这符合我的期望。遗憾的是,我必须在每个A、B、C、…、Z类中提供相同的代码块,但它仍然可以工作。非常感谢。
WrapperComponent {
@ContentChildren(BaseComponent) components;
}