Javascript Angular 2了解ViewContainerRef与TemplateRef的用法
我正在执行Angular2中的结构指令。 在文档中,我看到我需要注入Javascript Angular 2了解ViewContainerRef与TemplateRef的用法,javascript,angular,Javascript,Angular,我正在执行Angular2中的结构指令。 在文档中,我看到我需要注入TemplateRef以获取模板元素和ViewContainerRef class TestDirective { constructor( private templateRef : TemplateRef<any>, private viewContainer : ViewContainerRef ) { // this.viewContainer.createEmbeddedView(this.
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>
类TestDirective{
构造函数(私有templateRef:templateRef,私有viewContainer:ViewContainerRef){
//this.viewContainer.createEmbeddedView(this.templateRef);
}
}
我们的英雄是真的!
在这种情况下,我不明白哪个元素是
ViewContainerRef
?如果您注入ViewContainerRef
元素是TestDirective
的主机元素。如果使用@ViewChild(templateVarNameOrType)
或@ContentChild(templateVarNameOrType)
它是templateVarNameOrType
匹配的元素
您应该知道
this.viewContainer.createEmbeddedView()
或this.viewContainer.createComponent()
创建元素或组件,作为元素的同级ViewContainerRef
指向的元素或组件,而不是预期的子元素。您可以扩展您的答案,并提供示例,我看到很多人都在为这个问题苦苦挣扎。谢谢。@ViewChild(templateVarNameOrType)或@ContentChild(templateVarNameOrType),您已经复制了这个。viewContainer.createEmbeddedView()代码谢谢您的提示。是复制粘贴错误。也许可以填补缺失的空白。如果我需要将元素创建为子元素,该怎么办?您需要子元素中某个元素的ViewContainerRef
,但我不知道如何获取该元素,除非子元素提供了一个它通过@ViewChild()
获取自身的元素。