首页 > 解决方案 > Angular createEmbeddedView 没有在正确的索引处渲染视图,而是在最后一个索引处渲染

问题描述

我有一个包含多个子组件的父组件,其中一个子组件具有自定义结构指令“可访问”,如下面的代码所示。

假设,

<my-table>
    <div myTableColumn></div>
    <div myTableColumn *accessible="'user'"></div>
    <div myTableColumn></div>
    <div myTableColumn></div>
</my-table>

在这里,结构指令可访问写为

@Directive({
    selector: '[accessible]'
})

constructor(
    private templateRef: TemplateRef<any>,
    private viewContainerRef: ViewContainerRef
) {}

@Input() set accessible(val) {
    if (val === 'user') {
        this.viewContainerRef.createEmbeddedView(this.templateRef);
    } else {
        this.viewContainerRef.clear();
    }
}

但这是在最后一个索引处使用结构指令(即第二列)进行渲染。

如何将索引传递给 createEmbeddedView 以在正确的索引处插入模板。但是在上面的代码中传递索引似乎不起作用。

提前致谢。

标签: angularcomponentsangular-directiverenderer

解决方案


推荐阅读