Ich habe eine NgSwitch Vorlage. Im NgSwitch möchte ich einen Vorlagenreferenz auf die initialisierte Vorlage erhalten. Etwas wie folgt aus:Angular2 - Vorlage Referenz innerhalb NgSwitch
<div class="container" [ngSwitch]="model.type">
<first-component #ref *ngSwitchCase="0"></first-component>
<second-component #ref *ngSwitchCase="1"></second-component>
<third-component #ref *ngSwitchCase="2"></third-component>
</div>
Wenn auf eine Schaltfläche in der Komponente klicken ich auf den initialisierten Komponente aufgerufen werden soll (erste/zweite/dritte) ein Verfahren (die auf eine Schnittstelle definiert, die alle diese drei Komponenten implementieren) . Das Problem ist, dass ViewChild nicht definiert ist. Wenn ich #ref zum Container div bewegen, wie folgt aus:
<div class="container" #ref [ngSwitch]="model.type">
<first-component *ngSwitchCase="0"></first-component>
<second-component *ngSwitchCase="1"></second-component>
<third-component *ngSwitchCase="2"></third-component>
</div>
Die ViewChild (Template-Referenz) initialisiert, aber dann kann ich die Methode der Komponente aufrufen.
Wie kann ich sowohl die NgSwitch-Direktive als auch die Template-Referenzvariable verwenden? Oder auf der anderen Seite, wie kann ich die initialisierte Komponente von ihrem Elternteil aufrufen (in einem Fall verschiebe ich die #ref zum Container div).
danke für die Antwort. Ich finde das Problem, das ich in meiner Vorlage habe. Ich benutze ngSwitchCase Binding, um Variable wie hier beschrieben http://stackoverflow.com/questions/35835984/how-to-use-a-typescript-enum-value-in-angular2-ngswitch-statement - wenn ich dies verwende Muster mit den Aufzählungen Das Ansichtskind ist nicht definiert, auch nachdem die Ansicht initialisiert wurde. Wenn ich auf den ng-switch umgebe, der an Zahlen bindet - wie ich hier vorstelle, um den Code zu vereinfachen funktioniert es. Hast du eine Ahnung, warum es mit Enums Bindings passieren kann? – galvan