我试图扩展其中一个Material组件MdTabGroup。使用开箱即用的MdTabGroup组件一切正常 - 材料库正确导入模块等。
这是扩展组件:
@Component({
selector: 'md-custom-tab-group',
templateUrl: 'custom-tab-group.html',
....
})
export class MdCustomTabGroup extends MdTabGroup {
constructor( private _r : Renderer) {
super(_r);
}
}
新组件在app模块中导入并声明,因此创建:
<md-custom-tab-group>
<md-tab>one</md-tab>
<md-tab>two</md-tab>
</md-custom-tab-group>
自定义标签组(custom-tab-group.html
)的模板与材质中的模板相同,例如
<div class="mat-tab-body-wrapper" #tabBodyWrapper>
<md-tab-body role="tabpanel"
*ngFor="let tab of _tabs; let i = index"
...
[content]="tab.content"
...>
</md-tab-body>
</div>
运行时,_tabs
ViewChildren集合会正确填充 - 它包含原始标记中的md-tab
声明,解释为“材质”选项卡组件。但是,custom-tab-group.html
模板不有效。模板解析器现在还不知道什么是&md-tab-body&#39;是。
具体 -
无法绑定内容&#39;因为它不是'md-tab-body&#39;的已知属性。
但我不认为它在拿起新模板时知道md-tab-body是什么。
问题是 - 如何纠正此行为并使扩展组件正常工作?
答案 0 :(得分:1)
不是一个好的答案,但正在跟踪的这个问题似乎是它的根源。
https://github.com/angular/material2/issues/9216
一旦它们在导出列表中包含MatTabBody,MatTabHeader和MatTabLabelWrapper,您就应该能够扩展它。