2016-02-21 7 views
67

मुझे पता है कि angular2 में मैं [disable] विशेषता के साथ एक बटन को निष्क्रिय कर सकते, उदाहरण के लिए:Angular2 को निष्क्रिय बटन

<button [disabled]="!isValid" (click)="onConfirm()">Confirm</button> 

लेकिन मैं इसे [ngClass] या [ngStyle] का उपयोग कर कर सकता है? इस तरह:

<button [ngStyle]="{disabled : !isValid}" (click)="onConfirm()">Confirm</button> 

धन्यवाद।

+1

काम कर रहा है plnkr? पी = पूर्वावलोकन –

उत्तर

86

अद्यतन

मैं सोच रहा हूँ कर सकते हैं। आप [disabled] एंगुलर 2 द्वारा प्रदान की गई विशेषता बाध्यकारी का उपयोग क्यों नहीं करना चाहते हैं? इस स्थिति से निपटने का यह सही तरीका है। मैं आपको प्रस्ताव देता हूं कि आप isValid घटक विधि के माध्यम से जांचें।

isValidForm() { 
    return this.isValid; 
} 

<button [disabled]="!isValidForm()" (click)="onConfirm()">Confirm</button> 

तुम क्या करने की कोशिश की के साथ समस्या नीचे

समझाया मूल रूप से आप ngClass यहाँ इस्तेमाल कर सकते हैं। लेकिन वर्ग जोड़ना फायरिंग से घटना को प्रतिबंधित नहीं करेगा। वैध इनपुट पर ईवेंट को फायर करने के लिए, आपको नीचे click ईवेंट कोड बदलना चाहिए। ताकि onConfirm फ़ील्ड मान्य होने पर ही निकाल दिया जाएगा।

<button [ngClass]="{disabled : !isValid}" (click)="isValid && onConfirm()">Confirm</button> 

Demo Here

+0

वैसे मैं उस बटन में पहले से ही उस ngClass को जोड़ता हूं, इसलिए यह मुझे लगता है कि अक्षम होने की आवश्यकता है, क्यों [अक्षम] तरीका पसंद किया जाता है? –

+0

@NirSchwartz क्योंकि यह एक समय में दोनों चीजें करेगा .. चयनकर्ता सीएसएस नियम 'बटन [अक्षम]' चयनकर्ता आधारित और अक्षम ईवेंट पर लागू होंगे 'क्लिक' ईवेंट को बटन पर आग लगाने के लिए प्रतिबंधित करेगा .. 'ngClass' कक्षा में जैसा कि मैंने उपरोक्त उत्तर में दिखाया है, आपको इसे स्वयं संभालने की आवश्यकता है .. –

+0

ठीक है, मुझे मिल गया, धन्यवाद। –

29

मैं निम्नलिखित की सिफारिश करेंगे।

<button [disabled]="isInvalid()">Submit</button> 
+2

यह उत्तर बहुत अच्छा है, लेकिन आप शायद 'isInvalid()' का मतलब है। वैध रूप के लिए बटन अक्षम करने की भावना क्या है? – tommybernaciak

1

मैंने क्लिक ईवेंट के साथ अक्षम का उपयोग करने का प्रयास किया। नीचे स्निपेट है, स्वीकार्य उत्तर भी पूरी तरह से ठीक काम करता है, मैं यह जवाब देने के लिए यह उत्तर जोड़ रहा हूं कि इसे अक्षम के साथ कैसे उपयोग किया जा सकता है और गुणों पर क्लिक किया जा सकता है।

<button (click)="!planNextDisabled && planNext()" [disabled]="planNextDisabled"></button> 
0

आप प्रतिक्रियाशील रूपों का उपयोग कर और विधि से संबद्ध कुछ इनपुट अक्षम करना चाहते हैं, तो नियंत्रण, आपको इस कोड में disabled तर्क देना चाहिए और yourFormControl.disable() या yourFormControl.enable()

3

का उपयोग करना चाहिए अमान्य रूप के लिए बटन को अक्षम करने के लिए ngClass एंगुलर 2 में अच्छा अभ्यास नहीं है, जब यह किसी भी अतिरिक्त प्रयास/तर्क के बिना क्रमशः वैध और अमान्य है तो बटन को सक्षम और अक्षम करने के लिए अंतर्निर्मित सुविधाएं प्रदान करता है।

[disabled] सभी चीजें करेगा जैसे फॉर्म वैध है तो यह सक्षम हो जाएगा और यदि फॉर्म अमान्य है तो यह स्वचालित रूप से अक्षम हो जाएगा।

देखें उदाहरण:

<form (ngSubmit)="f.form.valid" #f="ngForm" novalidate> 
<input type="text" placeholder="Name" [(ngModel)]="txtName" name="txtname" #textname="ngModel" required> 
<input type="button" class="mdl-button" [disabled]="!f.form.valid" (click)="onSave()" name=""> 

1

हो सकता है नीचे कोड मदद कर सकते हैं: एक ही http://plnkr.co/edit/MW3vT4XscWcKrDdAwBoE के लिए

<button [attr.disabled]="!isValid ? true : null">Submit</button> 
यहाँ