Javascript Angular 4 ng内容选择不处理动态创建的转包元素
我正在使用Javascript Angular 4 ng内容选择不处理动态创建的转包元素,javascript,angular,transclusion,Javascript,Angular,Transclusion,我正在使用ComponentFactoryResolver动态创建要插入到模板中的元素,该模板使用ng content进行转换 在我将select属性添加到我的ng内容之前,这一切都非常有效。请看哪一个演示了这个问题。如果我从app.ts第63行的HeaderComponent模板中删除content top属性,模板将按预期呈现 但是,我确实需要使用select,因为要注入两个不同的模板片段,所以我不能简单地删除它 感谢您的帮助。角度转换仅适用于直系儿童。一种方法是使用ngTemplateOu
ComponentFactoryResolver
动态创建要插入到模板中的元素,该模板使用ng content
进行转换
在我将select
属性添加到我的ng内容
之前,这一切都非常有效。请看哪一个演示了这个问题。如果我从app.ts
第63行的HeaderComponent
模板中删除content top
属性,模板将按预期呈现
但是,我确实需要使用select
,因为要注入两个不同的模板片段,所以我不能简单地删除它
感谢您的帮助。角度转换仅适用于直系儿童。一种方法是使用
ngTemplateOutlet
从动态组件中提升内容:
<some-other-component>
<ng-template content-host></ng-template>
<ng-template top-content [ngTemplateOutlet]="topContent"></ng-template>
<ng-template bottom-content [ngTemplateOutlet]="bottomContent"></ng-template>
</some-other-component>
组件。ts
topContent: TemplateRef<any>;
bottomContent: TemplateRef<any>
const componentRef = viewContainerRef.createComponent(componentFactory);
const instance = componentRef.instance;
componentRef.changeDetectorRef.detectChanges();
this.topContent = instance.templates.find(x => x.place === 'top-content').templateRef;
this.bottomContent = instance.templates.find(x => x.place === 'bottom-content').templateRef;
topContent:TemplateRef如果我删除第63行的contenttop
属性,我看不出有什么区别。如果我从ng content
中删除select
,我会看到HeaderComponent
已呈现角度仅包含直接子项。请尝试select=“[content host]”
对不起,你说得很对,我的意思是从第18行删除select
。我需要能够选择在ng模板中被替换的元素,并且
仍然被替换。在本例中,
将是顶层。因为要注入两个不同的模板片段,所以我不能简单地删除它。
您能扩展您的示例吗?哪些片段也将被注入?
@ViewChildren(TranscludeMeToDirective) templates: QueryList<TranscludeMeToDirective>;