我正在 Angular2 中实现结构指令。
在文档中,我看到我需要注入TemplateRef
来获取模板元素和ViewContainerRef
。
class TestDirective {
constructor( private templateRef : TemplateRef<any>, private viewContainer : ViewContainerRef ) {
// this.viewContainer.createEmbeddedView(this.templateRef);
}
}
<template [ngIf]="condition">
<p>
Our heroes are true!
</p>
</template>
在这种情况下,我不明白哪个元素是ViewContainerRef
?
答案 0 :(得分:2)
如果您注入ViewContainerRef
,则该元素是TestDirective
的主机元素。如果您使用@ViewChild(templateVarNameOrType)
或@ContentChild(templateVarNameOrType)
,那就是templateVarNameOrType
匹配的元素。
您应该知道this.viewContainer.createEmbeddedView()
或this.viewContainer.createComponent()
会将元素或组件创建为元素ViewContainerRef
所指向的兄弟元素,而不是像孩子一样期望的那样。