2016-08-03 18 views
11

मैं सशर्त एक घटक (जहां au-disabled, au-accented, और au-focused निर्देशों कर रहे हैं) के लिए एक निर्देश जोड़ना चाहते हैं में निर्देशों को जोड़ने के लिए:कैसे सशर्त कोणीय 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> 

ऊपर दृष्टिकोण से काम करता है (और कुछ हद तक स्वीकार्य है मेरे लिए) क्योंकि (मेरे मामले में) सशर्त गुण disabled, accented, और focused परस्पर अनन्य हैं - मेरा प्रश्न उन मामलों में उत्पन्न होता है जहां सशर्त गुण पारस्परिक रूप से अनन्य नहीं होते हैं (प्रत्येक क्रमपरिवर्तन के लिए [ngIf] की आवश्यकता होती है):

<!-- 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 --> 

निम्नलिखित का उपयोग करते हुए मेरे कोड कम HTML के साथ संयोजन को संभालने के लिए अनुमति देता है:

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

लेकिन गाया एचटीएमएल हमेशा निर्देशों प्रत्येक एक सच्चाई मूल्य ले जाने के सभी है ... घटक का परीक्षण करना चाहिए उचित रूप से जवाब देने के लिए प्रत्येक निर्देश का वास्तविक मूल्य, लेकिन यह भी स्वीकार्य होगा कि अप्रासंगिक निर्देश भी लागू न हों। क्या ऐसा करने के लिए इससे अच्छा तरीका है?

उत्तर

3

यह समर्थित नहीं है। केवल घटकों को सशर्त रूप से जोड़ा/हटाया जा सकता है।

आप क्या कर सकते हैं यह निर्देश देने के लिए एक मूल्य पारित करना है कि उसे कुछ भी नहीं करना चाहिए।

भी देखें https://github.com/angular/angular/issues/5332

+1

ठीक ... यही कारण है कि क्या '<ओ-प्लेसहोल्डर [ओ-विकलांग] =" विकलांग "[ओ-स्वराघात] =" उच्चारण चिह्न "[ओ-ध्यान केंद्रित] =" केंद्रित "> 'फॉर्म कर रहा है ... – Neoheurist