Javascript Angular 2了解ViewContainerRef与TemplateRef的用法

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.

我正在执行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>
类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()
获取自身的元素。