我有一个组件:
@Component({
selector: 'vcrdi',
template: `
<template #tpl>
<h1>ViewContainerRef DI</h1>
</template>
`,
})
export class VcrDIComponent {
@ViewChild('tpl') tpl;
constructor(private _vcr: ViewContainerRef) {console.log(_vcr)}
ngAfterViewInit() {
this._vcr.createEmbeddedView(this.tpl);
}
}
此组件在主my-app
元素中用作:
@Component({
selector: 'my-app',
template: `
<vcrdi></vcrdi>
`,
})
vcrdi
组件中的Ctor注入了_vcr: ViewContainerRef
,所以现在容器是实际的<vcrdi>...</vcrdi>
元素。
这是渲染的DOM:
请注意,h1
是ViewContainerRef
之后插入的vcrdi
我们转到docs:
createEmbeddedView(templateRef: TemplateRef<C>, context?: C, index?: number) : EmbeddedViewRef<C>
实例化基于templateRef的嵌入式视图,并在指定的位置将其插入此容器 索引。如果未指定index,则新视图将作为最后一个插入 在容器中查看。
好吧,如果vcrdi
是容器引用,那么我没有看到任何注入其中:
<vcrdi>
// If vcrdi ^ is the container , then why does this section empty ?
</vcrdi>
问题:
文档说明有些东西被注入容器中
但是如果vcrdi
是容器,并且我们看到没有注入 - 但是附加 - 那么 - 我在这里缺少什么?
答案 0 :(得分:0)
对于vcrdi
组件,视图容器为<my-app></my-app>
。
解释和示例:https://netbasal.com/angular-2-understanding-viewcontainerref-acc183f3b682