2016-08-29 22 views
16

मैं निम्नलिखित पाठ क्षेत्र:लेखन त्रुटि: संपत्ति के 'वैध' नहीं पढ़ सकते हैं अपरिभाषित

<textarea class="form-control" [(ngModel)]="content" name="content" required> 
     </textarea> 

और निम्न सबमिट बटन:

<button type="submit" class="btn btn-default" [disabled]="content.valid">New comment</button> 

मैं कोणीय 2 प्रपत्र गाइड में देखा (https://angular.io/docs/ts/latest/guide/forms.html) यह जांचने के लिए कि क्या यह खाली नहीं है, मैं x.valid का उपयोग कर सकता हूं।

मुझे TypeError: Cannot read property 'valid' of undefined त्रुटि क्यों मिलती है?

+4

मैं लगता है कि आप इस याद किया: '# नाम = "ngModel"'। आपके मामले में: # सामग्री = "ngModel" – michael

+0

असल में मुझे एक ही त्रुटि मिलती है – TheUnreal

उत्तर

23

आपके मामले में सामग्री आपके मॉडल पर एक संपत्ति है।

क्रम क्या आप चाहते हैं आप प्रपत्र नियंत्रण # myControl = "ngModel" के लिए एक template reference value उपयोग करने की आवश्यकता है और फिर आप वैध संपत्ति की पहुंच है ऐसा करने के लिए: myControl.valid

तो अपने उदाहरण में:

<textarea class="form-control" [(ngModel)]="content" 
      name="content" required #myControl="ngModel"> 
</textarea> 

और बटन टैग में इसका इस्तेमाल करते हैं:

<button type="submit" class="btn btn-default" 
[disabled]="myControl.valid">New comment</button> 
+0

धन्यवाद! मैं अपने 'ngSubmit()' में 'सामग्री' कैसे भेज सकता हूं? मेरा फॉर्म '

'के साथ असाइन किया गया है, लेकिन मुझे नहीं पता कि इस तरह से सामग्री मूल्य कैसे प्राप्त करें – TheUnreal

+0

यदि आपने नियंत्रण पर ngModel का उपयोग किया है तो सबकुछ आपके मॉडल से जुड़ा हुआ है, इसलिए आप इसका उपयोग कर सकते हैं। यदि आपको फॉर्म से अधिक की आवश्यकता है तो आप दस्तावेज़ में ऐसा कर सकते हैं और फॉर्म के लिए संदर्भ प्राप्त कर सकते हैं '# heroForm = "ngForm"' और उसके बाद इसका उपयोग करें। –

+0

मुझे क्या समझ में नहीं आता है कि मैं अपने घटक (.ts फ़ाइल) में 'content' के मान का उपयोग कैसे कर सकता हूं? क्या मुझे इसे पैरामीटर के रूप में पास करने की आवश्यकता है या मैं इसे अपने घटक में किसी अन्य तरीके से उपयोग कर सकता हूं? – TheUnreal

2
<div class="form-group"> 
    <label for="inputEmail" class="col-lg-2 control-label">Email</label> 
    <div class="col-lg-10"> 
     <input type="text" class="form-control" id="name" placeholder="Name" minlength="4" maxlength="24" [(ngModel)]="name" name="email" #myName="ngModel" required> 
      <div *ngIf="myName.errors && (myName.dirty || myName.touched)" class="alert alert-danger"> 
       <div [hidden]="!myName.errors.required"> 
        Name is required 
       </div> 
       <div [hidden]="!myName.errors.minlength"> 
        Name must be at least 4 characters long. 
       </div> 
       <div [hidden]="!myName.errors.maxlength"> 
        Name cannot be more than 24 characters long. 
       </div> 
      </div> 
    </div> 
</div> 
+1

एक आदमी को एक मछली दें, वह एक दिन के लिए खाता है ... – Lurk21

संबंधित मुद्दे