Bagaimana cara menggunakan acara onBlur di Angular2?


112

Bagaimana Anda mendeteksi acara onBlur di Angular2? Saya ingin menggunakannya dengan

<input type="text">

Adakah yang bisa membantu saya memahami cara menggunakannya?

Jawaban:


211

Gunakan (eventName)untuk saat mengikat acara ke DOM, pada dasarnya ()digunakan untuk acara mengikat. Juga gunakan ngModeluntuk mendapatkan pengikatan dua arah untuk myModelvariabel.

Markup

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

Kode

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

Demo

Alternatif (tidak disukai)

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

Demo


Untuk formulir berdasarkan model untuk mengaktifkan validasi blur, Anda dapat meneruskan updateOnparameter.

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

Dokumen Desain


2
Mengapa alternatifnya tidak disukai?
slashp

Angular tidak ingin Anda menggunakan $ event di dalam HTML untuk mengirim kembali ke JS. Semua operasi DOM harus dilakukan melalui hal-hal seperti binding, ngModel, dan yang lainnya.
Barton Durbin

14

Anda juga dapat menggunakan acara (fokus) :

Gunakan (eventName)untuk saat mengikat acara ke DOM, pada dasarnya ()digunakan untuk acara mengikat. Anda juga dapat menggunakan ngModeluntuk mendapatkan pengikatan dua arah untuk Anda model. Dengan bantuan ngModelAnda dapat memanipulasi modelnilai variabel di dalam file component.

Lakukan ini dalam file HTML

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

Dan di file (komponen) .ts Anda

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

@Aniketkale Jika saya menempatkan peringatan dalam metode Anda someMethodWithFocusOutEvent, program masuk ke dalam loop saat peringatan membuat bidang kehilangan fokusnya, apakah ada cara untuk memperbaikinya?
ps0604

6

Anda dapat menggunakan langsung (blur) acara di tag input.

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

dan Anda akan mendapatkan keluaran dalam " hasil "


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


Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.