Angular 2中可以将Component
仅限制为页面上的特定父元素。换句话说,如果存在某个父元素,则仅允许页面上的Component
。使用案例:
应该可以:
<parent>
<child></child>
</parent>
不应该(没有<parent>
标记作为父级)
<child></child>
我需要转换父Component
并且<child>
标记是可选的,因此我无法执行:
@Component({
/*...*/
selector: 'parent',
template: `<child></child>`
});
有什么想法吗?
答案 0 :(得分:6)
这样的事情应该可以解决问题。
@Component({
selector: 'parent',
template: '<ng-content></ng-content>'
})
export class ParentComponent {
}
@Component({
selector: 'child',
template: ''
})
export class ChildComponent {
constructor(parent: ParentComponent){
// will throw a no provider error if parent is not set
}
}
然后您可以按照自己的意愿使用您的组件:
<parent><child></child></parent> <!-- works -->
<child></child> <!-- fails -->
请注意,当您在子项中注入父项时,该子项实际上可能是该子项,而不会抛出错误。