2016-08-07 7 views
2

Ich habe ein seltsames Verhalten ng-Gehalt mit * ngIf innerhalb einer Komponente finden Sie in diesem plunkr: http://plnkr.co/edit/BZim5lMhihuyAkDPfzZ6?p=previewInhalt Projektion mit * ngIf nicht funktionieren

Es ist eine Checkbox-Komponente, die ein Etikett auf der linken oder rechten Seite zeigt von Kontrollkästchen hängt von right Attribut ab.

@Component({ 
    selector: "em-checkbox", 
    template: ` 
<div class="form-group"> 
    <div class="checkbox"> 
    <label *ngIf="right"> 
     <input type="checkbox"> 
     <ng-content></ng-content> 
    </label> 
    <label *ngIf="!right"> 
     <ng-content></ng-content> 
     <input type="checkbox"> 
    </label> 
    </div> 
</div> 
    ` 
}) 
export class EmCheckbox { 
    @Input() right = false; 
} 

Es funktioniert nur mit dem ersten ng-Gehalt, aber nicht mit dem zweiten, ich kippe das Etikett auf rechts.

Antwort

1

ng-Inhalt kann nur einmal verwendet werden (siehe https://github.com/angular/angular/issues/9173).

Aber ich habe das Gefühl, Sie nicht wirklich brauchen, es zu benutzen zweimal nur um die Anpassung (und tatsächlich vereinfacht) Vorlage:

<div class="form-group"> 
    <div class="checkbox"> 
    <label> 
     <input *ngIf="right" type="checkbox"> 
     <ng-content></ng-content> 
     <input *ngIf="!right" type="checkbox"> 
    </label> 
    </div> 
</div> 
+1

was über diesen Fall: Ich habe Komponente ‚Layout‘ und wenn Variable 'userLoggedIn == true' ich will'

'präsentieren und wenn nicht, ich präsentieren wollen:'
'- wie es zu tun? –

+0

gute Frage, ich habe auch nicht-leere Elemente, die ich mit dem projizierten Inhalt in jedem Zustand bedingt anzeigen möchte, aber es scheint, dass eckige diesen Anwendungsfall nicht unterstützt – Ronin