/ / Wie kann ich eine Angular2-Komponente registrieren, deren DOM-Element von einer anderen Javascript-Bibliothek erstellt wurde? - Javascript, eckig, angular2-Komponenten

Wie kann ich eine Angular2-Komponente registrieren, deren DOM-Element von einer anderen Javascript-Bibliothek erstellt wurde? - Javascript, eckig, angular2-Komponenten

Angenommen, ich habe eine Komponente DynamicallyAddedComponent mit dem Selektor verbunden dynamically-added. Es gibt eine andere Komponente ParentComponent Das enthält ein anderes, nicht-eckiges JavaScript von Drittanbietern, das seinen internen DOM-Baum manipuliert und hinzufügen oder entfernen kann <dynamically-added> Stichworte.

Wenn ich a <dynamically-added> Tag direkt an die Vorlage von ParentComponent es macht gut, aber wenn meine Drittanbieter-Bibliothek Tags hinzufügt, erkennt angular nicht, dass eine Komponente hinzugefügt wurde.

Ich habe beide Komponenten hinzugefügt @NgModule Erklärungen in app.module.ts. Ich habe auch Anrufe hinzugefügt ChangeDetectorRef.detectChanges() und ApplicationRef.tick() innerhalb von Event-Handlern für die Modifikationsereignisse Dritter.

Wie kann ich Angular manuell mitteilen, dass eine Komponente hinzugefügt oder entfernt wurde? Wie erkennt und bootet Angular intern Komponenten?

Antworten:

1 für die Antwort № 1

Sie könnten das 3rd-Party-Event innerhalb ausführen ngZone was würde auslösen DOM Erkennung ändern

Innerhalb component.ts

constructor( public ngZone: NgZone) {}
ngZone.run( () => { // Change the property within the zone
//3rd party event action
});