2016-07-27 42 views
1

我正在使用Angular 2中的Google Maps V3,我目前正试图找到一个用绑定链接和输入值填充InfoWindows的解决方案。当创建InfoWindow元素时,它是一个新的DOM元素,根据Angular 2文档,不支持在应用程序初始化时不存在绑定到DOM元素的文档。有没有办法在新创建的DOM中插入或注入绑定元素,或者是否有预先创建的元素包含可以移动到InfoWindow中的绑定元素?Angular 2将DOM插入到由Google Maps V3 api创建的InfoWindow元素中

回答

1

我想你应该在这种情况下使用动态组件创建。刚刚尝试在你的服务或组件,哪知道,当你有渲染你的内容水木清华这样的:

import {ComponentResolver, ComponentFactory, ComponentRef, ApplicationRef, Injector} from '@angular/core'; 

export class SomeServiceOrComponent { 
    constructor(private resolver:ComponentResolver, private injector:Injector, private appRef:ApplicationRef) { 
    } 

    renderComponent() { 
    return this.resolver 
     .resolveComponent(YourDynamicComponentClass) 
     .then((factory:ComponentFactory<YourDynamicComponentClass>) => { 
      let cmpRef:ComponentRef<YourDynamicComponentClass> = 
       factory.create(this.injector, null, '.infoWindowsDOMSelector'); 
      (<any>this.appRef)._loadComponent(cmpRef); 
      return cmpRef; 
     }); 
    } 
} 

,只是调用这个方法,你是否需要它。

(<any>this.appRef)._loadComponent(cmpRef)为RC的上一个版本的一招,但也许很快就应该解决

+0

我是相当新的一般的角,所以请原谅我的无知。此示例是构建到现有类中吗?还是SomeServiceOrComponent引用了用于呈现动态内容的实用程序服务? – somecallmemike

+0

啊我得到它的工作,感谢您的帮助。我猜现在唯一的麻烦就是如何使用这种方法将数据作为@Input从父项传递给新组件? – somecallmemike

+0

得到这个工作也买添加cmpRef.instance.inputData = data;创建cmpRef后; – somecallmemike

相关问题