2017-11-22 1 views
0

das ist meine Vorlage:innerhalb ng-Vorlage Bezug auf die Element Get

<ng-template #template> 
    <input #newimg type="file" class="col-md-10" (change)="fileChange($event)"/> 
</ng-template> 

Ich kann nicht Bezug auf #newimg erhalten, wenn sein Innen ng-template (es funktioniert gut, wenn ich ng-template-div ändern!)

@ViewChild('newimg') img: ElementRef; //doesnt work 

Ich muss seinen Wert nach dem Hochladen des Bildes auf leer setzen, aber es ist immer undefiniert.

+0

Wie verwenden Sie diese 'ng-Vorlage'? –

+0

@ AngularInDepth.com 'ngx-Bootstrap' s modal – Veto

+0

Das Problem ist, dass Bootstrap Embedded View außerhalb der Komponente mit Vorlage erstellt, so dass '@ ViewChild' wird nicht funktionieren. –

Antwort

0

<ng-template> wird nicht zum DOM hinzugefügt, es existiert nur in JavaScript-Code, wenn die Anwendung ausgeführt wird. Nur wenn es zum Beispiel mit einer Strukturanweisung wie *ngFor oder *ngIf gestempelt wird, wird der Inhalt tatsächlich im DOM erstellt und Bindings, Komponenten, Direktiven, ... werden instanziiert.

Daher wird ohne Prägung kein #template abgefragt.

+0

aber er übergibt es an ngx-bootstrap und bootstrap modal erstellt eine eingebettete Ansicht mit dieser Vorlage –

+0

Dann ein Elternteil dieses Dialogs sollte in der Lage sein, es mit '@ContentChild ('Vorlage') ... 'abzufragen. –

+0

es ist keine Inhaltsprojektion beteiligt, die Vorlage wird direkt an die 'show' Methode des Bootstrap übergeben https://valor-software.com/ngx-bootstrap/#/modals –

Verwandte Themen