Angular2에서 onBlur 이벤트를 사용하는 방법은 무엇입니까?


112

Angular2에서 onBlur 이벤트를 어떻게 감지합니까? 나는 그것을 사용하고 싶다

<input type="text">

아무도 그것을 사용하는 방법을 이해하도록 도울 수 있습니까?

답변:


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 및 기타 등등을 통해 수행되어야합니다.
Barton Durbin

14

(focusout) 이벤트를 사용할 수도 있습니다 .

(eventName)이벤트를 DOM에 바인딩하는 동안 사용 하며 기본적으로 ()이벤트 바인딩에 사용됩니다. 또한 당신이 사용할 수있는 ngModel두 가지 방법은 당신의 바인딩을 얻을 model. 의 도움으로 ngModel당신은 조작 할 수있는 model사용자의 내부 변수 값을 component.

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

6

입력 태그에서 직접 (흐리게) 이벤트를 사용할 수 있습니다 .

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

" result "에 출력이 표시됩니다.


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


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.