จะใช้ onBlur event บน Angular2 ได้อย่างไร?


113

คุณตรวจจับเหตุการณ์ onBlur ใน Angular2 ได้อย่างไร? ฉันต้องการใช้กับ

<input type="text">

ใครสามารถช่วยฉันเข้าใจวิธีการใช้งาน

คำตอบ:


212

ใช้(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 ไม่ต้องการให้คุณใช้ $ event ภายใน HTML เพื่อส่งกลับไปที่ JS การดำเนินการ DOM ทั้งหมดควรทำผ่านสิ่งต่างๆเช่นการผูก ngModel และ whatnot
Barton Durbin

14

คุณยังสามารถใช้เหตุการณ์(โฟกัสเอาต์) :

ใช้(eventName)ในขณะที่เชื่อมโยงเหตุการณ์กับ DOM โดยทั่วไป()จะใช้สำหรับการผูกเหตุการณ์ นอกจากนี้คุณสามารถใช้ngModelเพื่อรับการผูกสองทางสำหรับmodelไฟล์. ด้วยความช่วยเหลือของngModelคุณสามารถจัดการmodelค่าตัวแปรภายในcomponentไฟล์.

ทำในไฟล์ HTML

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

และในไฟล์ (component) .ts ของคุณ

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

@Aniketkale ถ้าฉันแจ้งเตือนในวิธีของคุณsomeMethodWithFocusOutEventโปรแกรมจะเข้าสู่ลูปเนื่องจากการแจ้งเตือนทำให้ฟิลด์สูญเสียโฟกัสมีวิธีแก้ไขปัญหานี้หรือไม่
ps0604

6

คุณสามารถใช้เหตุการณ์(เบลอ)โดยตรงในแท็กอินพุต

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

และคุณจะได้ผลลัพธ์เป็น " ผลลัพธ์ "





โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.