2017-01-06 10 views
6

कोणीय 2 नवीनतम संस्करण में फ़ॉर्म रीसेट करने का सबसे साफ तरीका क्या है? मैं एक पोस्ट जोड़ने के बाद इनपुट टेक्स्टबॉक्स रीसेट करना चाहता हूं।फॉर्म रीसेट करने का सबसे आसान तरीका

@Component({ 
    selector: 'post-div', 
    template: ` 
      <h2>Posts</h2> 
      <form (submit)="addPost()"> 
       <label>Title: </label><input type="text" name="title" [(ngModel)]="title"><br/> 
       <label>Body: </label><input type="text" name="body" [(ngModel)]="body"><br/> 
       <input type="submit" value="Add Post"> 
      </form> 
      <ul> 
       <li *ngFor="let post of posts"> 
        <strong>{{post.title}}</strong> 
        <p>{{post.body}}</p> 
       </li> 
      </ul> 
      `, 
    providers: [PostService] 
}); 

addPost(){ 
    this.newPost = { 
     title: this.title, 
     body: this.body 
    } 
    this._postService.addPost(this.newPost); 
} 

उत्तर

16
<form #myForm="ngForm" (submit)="addPost(); myForm.reset()"> ... </form> 

या:

<form #myForm="ngForm" (submit)="addPost(myForm)"> ... </form> 
addPost(form: NgForm){ 
    this.newPost = { 
     title: this.title, 
     body: this.body 
    } 
    this._postService.addPost(this.newPost); 
    form.resetForm(); // or form.reset(); 
} 

जो ऊपर काम करने के लिए नहीं मिल सकता है लोगों के लिए एक और उदाहरण जोड़ना

बटन प्रेस के साथ

:

<form #heroForm="ngForm"> 
    ... 
    <button type="button" class="btn btn-default" (click)="newHero(); heroForm.reset()">New Hero</button> 
</form> 

यही बात लागू होती है इसके बाद के संस्करण, आप भी newHero कार्य करने के लिए प्रपत्र पारित करने के लिए चुन सकते हैं।

+0

यह अब और काम नहीं करता है। कोणीय नमूने में भी -> https://angular.io/guide/form- प्रमाणीकरण यदि आप "रीसेट के साथ नया हीरो" दबाते हैं तो दूसरी बार यह अभी भी "नाम आवश्यक है" सत्यापन त्रुटि दिखाएगा ??? चरण हैं: "नया नायक" दबाएं, नए मान टाइप करें और फिर "नया नायक" दबाएं। फॉर्म रीसेट के रूप में सत्यापन त्रुटियों को प्रकट नहीं होना चाहिए ??? – user1829319

+0

@ user1829319, मुझे नहीं पता कि इसका मतलब क्या है और अब काम नहीं कर रहा है। यदि आप इस [ट्यूटोरियल] (https://angular.io/guide/forms#show-and-hide-validation-error-messages) का पालन करते हैं, अनुभाग के निचले भाग के पास ([इस अनुभाग से पहले] (https: // angular.io/guide/forms#submit-the-form-with-ngsubmit)), आप देखेंगे कि उन्होंने फ़ॉर्म को रीसेट कर दिया है जैसा मैंने दिखाया है। आपको देखना चाहिए कि शुरुआत में उन्हें '

' जैसा कुछ था, फिर बाद में वे '<बटन प्रकार = "बटन" वर्ग = "बीटीएन बीटीएन-डिफ़ॉल्ट" (क्लिक करें) = "newHero(); heroForm.reset() "> नया हीरो'। यह एक ही चीज़ कम या कम है। – smac89

+0

क्या आपने अपने उदाहरणों को समझाए गए चरणों में कोशिश की? मेरा मतलब यह है कि यदि फॉर्म रीसेट हो गया है और पुराना है तो आपको सत्यापन त्रुटि नहीं मिलनी चाहिए। – user1829319

4

सबसे आसान और रूपों के बारे में अधिक जानकारी के लिए रूपों के साथ ही उनके त्रुटि राज्यों (गंदा, prestine आदि)

this.form_name.reset(); 

स्पष्ट करने के लिए स्पष्ट तरीका यहां

पीएस: जैसा कि आपने सवाल पूछा है कि कोई फॉर्म नहीं है आपके प्रश्न कोड में प्रयोग किया जाता है, आप formControl के साथ ngModel का उपयोग करके सरल दो दिन डेटा बाइंडिंग का उपयोग कर रहे हैं।

form.reset() विधि formControls के लिए ही काम करता है रीसेट फोन

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