2016-06-21 61 views
2

角色,我有,我想每一次按鍵後驗證輸入的輸入字段。最終,我想驗證它,當他們點擊輸入字段以外(不確定使用哪個DOM事件)。問題在於輸入「滯後」一個字符。Angular2 ngModel一個落後

例如,如果在「一」,那麼ngModel變量的用戶類型它映射到等於「」。當他們輸入「ab」時,變量等於「a」。

部分代碼創建-item.component.ts

export class CreateItem { 
    public item: Item; 

    constructor() { 
    this.item = new Item(); 
    } 

    onCheckItemInput() { 
    // validate input on each keystroke 
    } 
} 

輸入字段的創建-item.component.html

<input class="form-control" type="text" required [(ngModel)]="item.name" 
    #spy pattern=".{3,255}" (input)="onCheckItemInput()"> 

我在做什麼錯?

+0

您使用的是什麼Angular2版本? –

+0

RC2。我們已經想通了。 :) – DankestMemes

回答

1

blur事件被觸發每當用戶失去焦點與輸入元件。

實施例:用戶點擊輸入框的外部。

<input class="form-control" type="text" required [(ngModel)]="item.name" 
#spy pattern=".{3,255}" (blur)="onCheckItemInput()"> 

我創建了一個簡單的plunker來證明這一點

https://plnkr.co/edit/4wnanssu08WPRziMkh9d?p=preview

+0

有時我會匆忙。優秀的答案,適合我所有的需求。 – DankestMemes

0

要讓打字時它改變,就可以使用(keydown)

<input class="form-control" type="text" required [(ngModel)]="item.name" 
    #spy pattern=".{3,255}" (keydown)="onCheckItemInput()"> 
0

,如果你想,當用戶點擊輸入框以外的驗證輸入,如果你想驗證每個按鍵使用(ngModelChange)事件可以使用(其他城市)事件。