¿Cómo usar el evento onBlur en Angular2?


112

¿Cómo detecta un evento onBlur en Angular2? Quiero usarlo con

<input type="text">

¿Alguien puede ayudarme a entender cómo usarlo?

Respuestas:


211

Úselo (eventName)para vincular eventos a DOM, básicamente ()se usa para vincular eventos. También se usa ngModelpara obtener un enlace bidireccional para la myModelvariable.

Margen

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

Código

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

Manifestación

Alternativa (no preferible)

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

Manifestación


Para que el formulario controlado por modelo active la validación blur, puede pasar el updateOnparámetro.

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

Documentos de diseño


2
¿Por qué no es preferible la alternativa?
slashp

Angular no quiere que use el evento $ dentro del HTML para enviar de vuelta al JS. Todas las operaciones DOM deben realizarse a través de cosas como enlaces, ngModel y otras cosas.
Barton Durbin

14

También puede usar el evento (focusout) :

Úselo (eventName)para vincular eventos a DOM, básicamente ()se usa para vincular eventos. También puede utilizar ngModelpara obtener enlaces bidireccionales para su model. Con la ayuda de ngModelusted puede manipular el modelvalor de la variable dentro de su component.

Haz esto en un archivo HTML

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

Y en su archivo (componente) .ts

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

@Aniketkale Si pongo una alerta en su método, someMethodWithFocusOutEventel programa entra en un bucle cuando la alerta hace que el campo pierda su enfoque, ¿hay alguna manera de solucionarlo?
ps0604

6

puede utilizar directamente el evento (desenfoque) en la etiqueta de entrada.

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

y obtendrá una salida en " resultado "


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()); }}


Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.