6
  • 这是我发现的一个解决方案,我认为对其他人有用。

  • 这可以应用于任何未设置 ViewContainerRef 的本机元素。

我正在尝试在单击事件上在表格(Tabulator v4.2)内植入角度组件。该表是由插件动态创建的,因此我无法访问需要为其设置角度 ViewContainerRef 的 DOM 元素。在单击事件回调中,我可以访问要添加角度组件的元素。

如何在没有设置角度 ViewContainerRef 的情况下将角度组件添加到该元素?

每次单击都应创建一个新组件并将其设置在给定的 DOM 元素中。

4

1 回答 1

3

我使用 Angular 渲染器和 Angular 动态组件解决了这个问题。 Angular 动态组件加载器

父组件 HTML

<ng-template #willContainTheChildComponent></ng-template>

父组件类

@ViewChild('willContainTheChildComponent', {read: ViewContainerRef}) willContainTheChildComponent: ViewContainerRef;

constructor(private componentFactoryResolver: ComponentFactoryResolver,
    private renderer: Renderer2) {
}



//The click handler
            onClick: (e, row) => {
                const componentFactory = this.componentFactoryResolver.resolveComponentFactory(TheComponentClass);
                const component = this.willContainTheChildComponent.createComponent(componentFactory);
                //Here I have access to component.instance to manipulate the class' contents
                this.renderer.appendChild(row.getElement(), component.location.nativeElement);
            }
于 2019-04-17T14:02:57.620 回答