将 angular2 组件插入本机 DOM

Posted

技术标签:

【中文标题】将 angular2 组件插入本机 DOM【英文标题】:Inserting angular2 component into native DOM 【发布时间】:2016-03-14 12:02:44 【问题描述】:

我在我的应用程序中使用 Windows 系统的 DhtmlX 库。

在 Angular1 中我做了这样的事情:

var windows = new dhtmlXWindows();
var wnd = windows.createWindow();
var new_scope = $rootScope.$new();
var content_dom = angular.element($compile('<div>Content</div>')(new_scope))[0];
wnd.attachObject(content_dom);

是否可以在 Angular2 中做同样的事情? 我想我应该使用DynamicComponentLoaderloadIntoLocation,但我不明白我应该在loadIntoLocation 函数的参数hostLocationanchorName 中添加什么。

【问题讨论】:

【参考方案1】:

我找到了这个解决方案。它有效,但我不确定这样做是否正确。

@Component(
    selector: 'app',
    template: `
      <div #windows></div>
    `
)
class EnviromentComponent 

var app = bootstrap(EnviromentComponent);

app.then(function (componentRef) 
    var dynamicComponentLoader:DynamicComponentLoader = componentRef.injector.get(DynamicComponentLoader);

    dynamicComponentLoader.loadIntoLocation(MyComponent, componentRef.location, 'windows').then(function(elementRef) 
        var wnd = new dhtmlXWindows();
        wnd.attachObject(elementRef.location.nativeElement);
  );
);

【讨论】:

以上是关于将 angular2 组件插入本机 DOM的主要内容,如果未能解决你的问题,请参考以下文章

如何将日历组件插入 Angular 2 应用程序?

以编程方式插入不同的 Angular2 组件

Angular2:使用DynamicComponentLoader动态插入的组件上的双向数据绑定

Angular 2 - 使用 ComponentResolver 加载在运行时下载的组件

Angular2动态组件和TP jQuery库

使用angular2将HTML从服务器插入DOM(Angular2中的一般DOM操作)[重复]