如何在Angular2上使用onBlur事件?


112

如何在Angular2中检测到onBlur事件?我想用它

<input type="text">

谁能帮助我了解如何使用它?

Answers:


211

使用(eventName)的同时,结合事件,DOM,主要()用于事件绑定。也用于ngModel获取myModel变量的两种方式绑定。

标记

<input type="text" [(ngModel)]="myModel" (blur)="onBlurMethod()">

export class AppComponent { 
  myModel: any;
  constructor(){
    this.myModel = '123';
  }
  onBlurMethod(){
   alert(this.myModel) 
  }
}

演示版

替代(不推荐)

<input type="text" #input (blur)="onBlurMethod($event.target.value)">

演示版


为了使模型驱动的表单能够在上进行验证blur,您可以传递updateOn参数。

ctrl = new FormControl('', {
   updateOn: 'blur', //default will be change
   validators: [Validators.required]
}); 

设计文件


2
为什么替代方案不受欢迎?
slashp

Angular不希望您使用HTML内的$ event发送回JS。所有DOM操作都应通过绑定,ngModel和诸如此类的东西来完成。
巴顿·杜宾

14

您还可以使用(focusout)事件:

使用(eventName)的同时,结合事件,DOM,主要()用于事件绑定。您也可以使用ngModel来获得两种方式的绑定model。在ngModel您的帮助下,您可以modelcomponent

在HTML文件中执行此操作

<input type="text" [(ngModel)]="model" (focusout)="someMethodWithFocusOutEvent($event)">

并在您的(.ts)文件中

export class AppComponent { 
 model: any;
 constructor(){ }
 someMethodWithFocusOutEvent(){
   console.log('Your method called');
   // Do something here
 }
}

@Aniketkale如果我在您的方法someMethodWithFocusOutEvent中添加了警报,则由于警报使该字段失去焦点,程序会进入循环,是否可以解决此问题?
ps0604 '19

6

您可以在输入代码中直接使用(模糊)事件。

<div>
   <input [value] = "" (blur) = "result = $event.target.value" placeholder="Type Something">
   {{result}}
</div>

您将在“ 结果 ”中得到输出


3

的HTML

<input name="email" placeholder="Email"  (blur)="$event.target.value=removeSpaces($event.target.value)" value="">

TS

removeSpaces(string) {
 let splitStr = string.split(' ').join('');
  return splitStr;
}

1
/*for reich text editor */
  public options: Object = {
    charCounterCount: true,
    height: 300,
    inlineMode: false,
    toolbarFixed: false,
    fontFamilySelection: true,
    fontSizeSelection: true,
    paragraphFormatSelection: true,

    events: {
      'froalaEditor.blur': (e, editor) => { this.handleContentChange(editor.html.get()); }}


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.