Ich möchte als untergeordnetes Element eine Komponente zu einer Elementref hinzufügen und Zugriff auf deren Eigenschaften haben.
const element: HTMLElement = document.createElement('div');
element.innerHTML = // Component needs to be added here
// Need to have access to properties of the Component here
Ich habe meinem Projekt einen vollständigen Kalender hinzugefügt und für die Zeitleiste muss ich benutzerdefinierte Ressourcenelemente hinzufügen. Dafür bekomme ich nur Zugriff auf das HTMLElement und einige Daten. Ich möchte also eine initialisierte Komponente an das HTMLElement übergeben.
Im Moment besteht meine einzige Option darin, das HTML als Zeichenfolge zu schreiben und an das innerHTML zu übergeben. Gibt es eine bessere Option?
Antworten:
In einem meiner Projekte habe ich auf diese Weise etwas erreicht, das Ihrer Anforderung entspricht. Lassen Sie mich wissen, ob es hilft?
Auf diese Weise haben Sie Verweis auf Ihre dynamische Komponente als
componentRef
quelle
Möglicherweise können Sie Renderer2 verwenden
Mehr Beispiele
quelle
In der Angular-Dokumentation heißt es
Auf diese Weise können Sie das Element erstellen, das Sie mit hinzufügen möchten
document.createElement('elementName')
wenn es sich um ein autonomes benutzerdefiniertes Element handelt , oderdocument.createElement('baseElementName', {is: 'elementName'})
wenn es sich um ein benutzerdefiniertes integriertes Element handelt .Sie können das von Ihnen erstellte
container
Elementcontainer.insertAdjacentElement(position, element)
wie hier beschrieben in ein Element einfügen .quelle
writing the html as the string and passing it to the innerHTML
quelle
Da die Komponente in window.customElements registriert ist
und dies laut Angular-Dokumentation wahrscheinlich der Fall ist, können
Sie Folgendes tun:
quelle
Was Sie erreichen möchten, ist unmöglich und widerspricht Best Practices. Stattdessen müssen Sie diese Komponente mit Bedingungen anzeigen. Sie können eine Variable im Service erstellen und basierend auf diesem Wert kann die Komponente angezeigt oder geloopt werden.
quelle