2016-07-27 9 views
1

Ich arbeite mit Google Maps V3 innerhalb von Angular 2 und versuche derzeit, eine Lösung zum Füllen von InfoWindows mit gebundenen Links und Eingabewerten zu finden. Wenn ein InfoWindow-Element erstellt wird, handelt es sich um ein neues DOM-Element, und gemäß den Docs von Angular 2 wird die Bindung an ein DOM-Element, das bei der Initialisierung der App nicht vorhanden war, nicht unterstützt. Gibt es eine Möglichkeit, gebundene Elemente in das neu erstellte DOM einzufügen oder einzufügen oder ein vordefiniertes Element zu verwenden, das die gebundenen Elemente enthält, die in das InfoWindow verschoben werden können?Angular 2 DOM in das InfoWindow-Element einfügen, das von Google Maps V3 erstellt wurde api

Antwort

1

Ich denke, Sie sollten dynamische Komponenten erstellen in diesem Fall verwenden. Versuchen Sie einfach smth wie dies in Ihrem Dienst oder eine Komponente, die weiß, wann Sie machen Ihre Inhalte haben:

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; 
     }); 
    } 
} 

und rufen Sie diese Methode, ob Sie es brauchen.

(<any>this.appRef)._loadComponent(cmpRef) ist ein Trick von i.Vj. Versionen von RC, aber vielleicht bald soll es

+0

Ich bin ziemlich neu in Angular im Allgemeinen gelöst werden, so meine Unwissenheit verzeihen. Wäre dieses Beispiel in die vorhandene Klasse integriert oder bezieht sich SomeServiceOrComponent auf einen Dienstprogrammdienst zum Rendern dynamischer Inhalte? – somecallmemike

+0

Ah ich habe es funktioniert, danke für die Hilfe. Ich denke, die einzige Schwierigkeit im Moment ist, wie würde ich Daten an die neue Komponente von der Eltern als @ Input mit dieser Methode übergeben? – somecallmemike

+0

Haben Sie dies zu arbeiten, auch Kauf hinzufügen cmpRef.instance.inputData = Daten; nach dem Erstellen von cmpRef; – somecallmemike