2016-08-03 21 views
11

Ich möchte Richtlinien in den bedingt eine Richtlinie zu einer Komponente hinzufügen (wo au-disabled, au-accented und au-focused sind die Richtlinien) bedingt in:Wie Angular 2

<template [ngIf]="disabled"> 
    <au-placeholder au-disabled></au-placeholder> 
</template> 

<template [ngIf]="accented"> 
    <au-placeholder au-accented></au-placeholder> 
</template> 

<template [ngIf]="focused"> 
    <au-placeholder au-focused></au-placeholder> 
</template> 

Der obige Ansatz funktioniert (und etwas akzeptabel zu mir) weil (in meinem Fall) die bedingten Eigenschaften disabled, accented und focused sich gegenseitig ausschließen - meine Frage entsteht in Fällen, in denen die bedingten Eigenschaften sich nicht gegenseitig ausschließen (eine [ngIf] für jede Permutation erforderlich, um die entsprechende flektierte Form anzuwenden):

<!-- all of the prior <template [ngIf]= ... --> 

<!-- plus --> 

<template [ngIf]="disabled && accented"> 
    <au-placeholder au-disabled au-accented></au-placeholder> 
</template> 

<template [ngIf]="disabled && accented && focused"> 
    <au-placeholder au-disabled au-accented au-focused></au-placeholder> 
</template> 

<!-- etc --> 

die folgende verwenden, können meinen Code die Kombinationen mit weniger HTML zu handhaben:

<au-placeholder [au-disabled]="disabled" [au-accented]="accented" [au-focused]="focused"></au-placeholder> 

aber das gerenderte HTML immer hat alle Richtlinien jeder trägt einen Wahrheitswert ... muss die Komponente testen die Wahrheitswert jeder Richtlinie, um angemessen zu reagieren, aber es wäre sauberer, nicht einmal irrelevante Richtlinien angewendet zu haben. Gibt es einen besseren Weg, dies zu tun?

Antwort

3

Dies wird nicht unterstützt. Nur Komponenten können bedingt hinzugefügt/entfernt werden.

Sie können einen Wert übergeben, um der Richtlinie bewusst zu machen, dass sie nichts tun soll.

Siehe auch https://github.com/angular/angular/issues/5332

+1

OK ... Das ist, was die ' 'Formular macht ... – Neoheurist