2016-10-08 46 views
1

我在角2模型驅動的窗體中使用,當用戶離開輸入元素時,我希望立即在服務器中更新數據(自動保存)。angular 2獲取模板中的FormControl作爲局部變量

因此,我的解決方案是使用(blur)事件並將窗體控件傳遞給函數,然後檢查dirty屬性是否爲true,然後更新服務器。

我該怎麼做?

在此先感謝

<input type="text" 
 
formControlName="firstName" 
 
[(ngModel)]="contact.firstName" 
 
#ctrl=[currentFormControl] 
 
(blur)="onBlur(ctrl)" 
 
        />
frm.component.ts:

onBlur(formControl: FormControl){ 

     if(formControl.dirty){ 
      //update server 
      formControl.reset(); 
     } 

    } 

回答

2

很簡單

<form *ngIf="contactForm" (ngSubmit)="onSubmit()" [formGroup]="contactForm"> 
    <div class="col-sm-12"> 
     <div class="form-group col-sm-4"> 
      <input type="text" 
        formControlName="firstName" 
        [(ngModel)]="contact.firstName" 
        (blur)="onBlur(contactForm.controls['firstName'])" 
      /> 
     </div> 

0

我不知道你是什麼意思的用戶失去了控制,但內置功能轉換成名爲CanDeactivate的角度路由器,它允許您在任何情況下停止導航或執行保存數據等操作。

這裏參考示例應用程序 - angular.io/resources/live-examples/router/ts/plnkr.html

+0

我的意思是 「離開控制」(如在MS Access 「更新後」 控制) 對不起我的英語不好 –