2017-10-17 3 views
0

Ich versuche, ein Eingabeelement von Typoskript zu HTML in eckigen 4 zu erstellen. Aber wenn ich versuche, setzen [(ngModel)] funktioniert nicht. Wie mache ich diese Methode? Jemand weiß wie? Dokument setAttribute ngModel Angular

createElement() { 
    this.input = document.createElement('input'); 
    this.input.setAttribute('matInput', ''); 
    this.input.setAttribute('placeholder', 'Tema'); 
    this.input.setAttribute('[(ngModel)]', 'module.theme'); 
    this.input.setAttribute('name', 'theme'); 

    return (<HTMLDivElement>(document.getElementById('ejemplo').appendChild(this.input))); 
    } 

Antwort

1

So etwas wie

this.input.setAttribute('[(ngModel)]', 'module.theme'); 

soll nicht arbeiten. Eigenschafts-/Attributsbindungen und die Instantiierung von Komponenten/Direktiven treten nur für Markups auf, die statisch zu einer Komponentenvorlage hinzugefügt werden.

Wenn es dynamisch hinzugefügt wird, hat es keinen Effekt. Wenn Sie dies benötigen, können Sie eine Komponente zur Laufzeit erstellen und kompilieren und diese Komponente dynamisch hinzufügen (zu einer statisch definierten ViewContainerRef).

Alternativ können Sie den imperativen Code verwenden, um das DOM zu aktualisieren.