2017-07-19 63 views
6

我使用的是angular 2.4.0,我想在表单提交后清除输入字段。 试过SendRequest.reset()在模板驱动的表单提交表单后重置表单Angular2

component.ts

getRevision(SendRequest: NgForm){ 
    this.submitted = true; 
    let headers = new Headers({ 
     'Content-Type': 'application/x-www-form-urlencoded' 
    }); 
    let params = { 
     "Firstname":this.name, 
     "Lastname":"", 
     "Email":this.email, 
     "Phonecode":"91", 
     "Phone":this.phone, 
     "Message":this.message,  
     } 
    return this.http.post(this.url,params) 
    .map(res => res.json()) 
    .catch(this.errorHandler) 
    .subscribe(
      data => { 
       this.revisions = data.resultData; 
       this.resultCode = data.resultCode; 
       this.responeseMsg = data.message.MessageText;     
      }, 
      err => { 
       console.log(err); 
      }, 
      () =>{ 
      SendRequest.resetForm(); 
      SendRequest.form.reset(); 
      } 
     ) 

    } 

component.html

<form #SendRequest="ngForm" [formGroup]="SendRequest" > 
    <div class="col-md-6"> 
    <div class="form-group"> 
    <input type="text" name="name" [(ngModel)]="name" class="form-control" placeholder="Your Name" required #fullname="ngModel"> 
    <div *ngIf="fullname.errors && (fullname.dirty || fullname.touched)" 
    class="contact-validate"> 
    <div [hidden]="!fullname.errors.required"> 
     Name is required 
    </div>          
    </div> 
</div> 
<div class="form-group"> 
    <input type="email" name="email" class="form-control" [(ngModel)]="email" required #emailid="ngModel" placeholder="Your Email" pattern="^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$"> 
    <div *ngIf="emailid.errors && (emailid.dirty || emailid.touched)" 
    class="contact-validate"> 
    <div [hidden]="!emailid.errors.required"> 
    Email is required 
    </div> 
    <div [hidden]="!emailid.errors.pattern"> 
    Please enter valid email format 
    </div>          
</div> 
</div> 
<div class="form-group"> 
<input type="text" name="phone" class="form-control" [(ngModel)]="phone" placeholder="Your Phone" required pattern="[0-9]+" #phoneno="ngModel"> 
<div *ngIf="phoneno.errors && (phoneno.dirty || phoneno.touched)" 
class="contact-validate"> 
<div [hidden]="!phoneno.errors.required"> 
    Phone is required 
</div>  
<div [hidden]="!phoneno.errors.pattern"> 
    Phone must be number 
</div>               
</div> 
</div> 
</div> 
<div class="col-md-6"> 
    <div class="form-group"> 
    <textarea class="form-control" name="message" [(ngModel)]="message" #msg="ngModel" required placeholder="Your Message" rows="7"></textarea> 
    <div *ngIf="msg.errors && (msg.dirty || msg.touched)" 
    class="contact-validate"> 
    <div [hidden]="!msg.errors.required"> 
    Message is required 
    </div>          
</div> 
</div> 
</div> 
<div class="send-msg-btn"> 
    <button type="button" [disabled]="!SendRequest.form.valid" (click)="getRevision()" class="btn btn-primary"><i class="fa fa-send"></i>send message</button>  
</div> 
</form> 

,我号召按钮点击getRevision(),试图
SendRequest.resetForm(); SendRequest.form.reset(); 已经而非工作 请给我建议,这里有什么问题。

+0

发送变量“SendRequest”与按钮点击事件中的方法调用,getRevision(SendRequest) –

+0

嘿,让我知道如果[我的解决方案](https://stackoverflow.com/a/45183145/2545680)工作你 –

+0

@Maximus Thans为答案,我正在检查它 –

回答

1

您需要使用在你的组件创建的FormGroupreset方法和引用它与this

this.SendRequest.reset(); 
+0

@NikhilRadadiya,Pengyy答案也像这样'SendRequest.reset(); '没有指定表单控制值?我不明白它是如何工作的 –

+0

是的,兄弟它做的工作 –

+0

@NikhilRadadiya,嗯,我不明白怎么做。 'NgForm'甚至没有'reset'方法[如文档中所示](https://angular.io/api/forms/NgForm) –

5

您应在单击事件传递SendRequest(形成本身)send message按钮

<button type="button" [disabled]="!SendRequest.form.valid" (click)="getRevision(SendRequest)" class="btn btn-primary"><i class="fa fa-send"></i>send message</button> 

然后致电form.reset()重置模板驱动表单。

getRevision(SendRequest: NgForm){ 
    ... 
    SendRequest.reset();  // <-------reset form here 
} 

简单demo

+0

非常感谢,它的工作 –

+0

嘿,你能解释为什么你的解决方案的工作原理? 'NgForm'似乎没有'reset'方法[如文档所示](https://angular.io/api/forms/NgForm)。另外,如果你没有为它们指定值,为什么控件重置为空?谢谢 –

+0

@Maximus这是HTML5 formElement的普通功能,你可以在这里找到它的文档:https://developer.mozilla.org/en-US/docs/Web/API/HTMLFormElement/reset – Pengyy