2017-02-11 11 views
5

निष्क्रिय करने के लिए ts is_edit = true में में एक इनपुट अक्षम कैसे करें ...angular2

<input [disabled]="is_edit=='false' ? true : null" id="name" type="text" [(ngModel)]="model.name" formControlName="name" class="form-control" minlength="2"> 

मैं बस true या false के आधार पर एक इनपुट को निष्क्रिय करना चाहते।

मैं निम्नलिखित की कोशिश की:

[disabled]="is_edit=='false' ? true : null" 
[disabled]="is_edit=='true'" 
[disabled]="is_edit" 
+7

आपने पहले ही इस प्रश्न पूछा, और पहले से ही एक जवाब था, लेकिन उसके बाद प्रश्न हटा दिया गया। दोबारा, त्रुटियों को नोटिस करने के लिए अपने ब्राउज़र कंसोल को खोलें, उन्हें ठीक करें (यानी नाम का उपयोग करें और फॉर्म कंट्रोलनाम नहीं), और फिर, यह काम करता है: http://plnkr.co/edit/al2IkGkaZKpdLKKTfvKh?p=preview –

उत्तर

54

attr.disabled उपयोग करने का प्रयास करने की बजाय disabled

<input [attr.disabled]="disabled?'':null"/> 
+0

तत्व में एटीआर नहीं जोड़ने के लिए एटआर मान को शून्य पर सेट करना - एक हैक की तरह दिखता है - लेकिन यह वास्तव में काम करता है, और यहां तक ​​कि एक बाधा में, sence बनाता है। – c69

+0

'अक्षम '' सत्य' या 'झूठी' – Belter

3

मुझे लगता है आप false बजाय 'false'

इसके अलावा मतलब, [disabled] एक Boolean उम्मीद कर रही है। आपको null लौटने से बचना चाहिए।

0

Demo

प्रकार बूलियन की is_edit बनाते हैं।

<input [disabled]=is_edit id="name" type="text"> 

export class App { 
    name:string; 
    is_edit: boolean; 
    constructor() { 
    this.name = 'Angular2' 
    this.is_edit = true; 
    } 
} 
13

मुझे लगता है कि मैं इस समस्या है, इस इनपुट क्षेत्र एक प्रतिक्रियाशील प्रपत्र का हिस्सा है (?) पता लगा, जब से तुम formControlName शामिल किया है। इसका अर्थ यह है कि is_edit के साथ इनपुट फ़ील्ड को अक्षम करके आप जो करने का प्रयास कर रहे हैं, वह काम नहीं कर रहा है, उदाहरण के लिए आपके प्रयास [disabled]="is_edit", जो अन्य मामलों में काम करेगा।

toggle() { 
    let control = this.myForm.get('name') 
    control.disabled ? control.enable() : control.disable(); 
} 

और is_edit पूरी तरह खो देते हैं: अपने फ़ॉर्म के साथ आप कुछ इस तरह करने की जरूरत है।

आप इनपुट क्षेत्र डिफ़ॉल्ट के रूप में निष्क्रिय किया जा करना चाहते हैं, आप के रूप में प्रपत्र नियंत्रण स्थापित करने की आवश्यकता:

name: [{value: '', disabled:true}] 

यहाँ एक plunker

+1

मुझे एहसास है कि यह एक पुराना है पोस्ट करें, लेकिन ''अक्षम] नाम के साथ' formControlName' के उपयोग के बारे में आपकी स्पष्टीकरण के लिए मैं आभारी हूं, विशेष रूप से वे पारस्परिक रूप से अनन्य हैं। मैं इस बारे में कोई दस्तावेज खोजने के लिए एक या दो दिन की कोशिश कर रहा हूं क्योंकि मैंने व्यवहार को देखा है। धन्यवाद! @ AJT_82 – kbpontius

3
<input [disabled]="isDisabled()" id="name" type="text"> 

export class AppComponent { 
    name:string; 
    is_edit : boolean = false; 


isDisabled() : boolean{ 
    return this.is_edit; 
} 
} 
+1

सरल समाधान जो काम करता है! धन्यवाद! – jfajunior

3

आप जो खोज रहे हैं वह अक्षम = "सत्य" है।

<textarea class="customPayload" disabled="true" *ngIf="!showSpinner"></textarea> 
0

ऊपर fedtuck's accepted answer पर Belter की टिप्पणी के जवाब में एक नोट के बाद से मैं टिप्पणियां जोड़ने के लिए प्रतिष्ठा की कमी है,: यहाँ एक उदाहरण है।

यह नहीं सच किसी भी जिनमें से मैं वाकिफ हूँ के लिए, लाइन में Mozilla docs

विकलांग को सही या गलत

अक्षम विशेषता मौजूद है तत्व परवाह किए बिना अक्षम किया गया है के बराबर होती है के साथ है मूल्य का।this example

<input placeholder="i can be changed"/> 
<input disabled placeholder="i can NOT be changed"/> 
<input disabled="true" placeholder="i can NOT be changed"/> 
<input disabled="false" placeholder="i can NOT be changed"/> 
+0

के बराबर है जो शुद्ध एचटीएमएल के लिए सच है और पूरी तरह से सच है, लेकिन कोणीय के लिए, आपको अक्षम करने के लिए एक बूलियन मान प्रदान करना होगा, खासकर जब आप दो तरह से बाध्यकारी कर रहे हों। –

1

आप बस कर सकता देखें इस

<input [disabled]="true" id="name" type="text">