2017-12-20 30 views
2

의 흐림에 해고 이유 : 내 사용자 입력이 어떤을 발사하지으로변경 이벤트는 내 템플릿의 ControlValueAccessor 인터페이스를 구현하는 사용자 입력을 넣고 같은 그 변경 이벤트에 바인딩 할 경우 controlValueAccessor

<input-app [value]="'initialVal'" (change)="onChange($event)"></input-app> 

이벤트를 흐리게 처리해야합니다 (입력에 집중하고 변경 한 다음 흐리게 처리해야 이벤트가 콘솔에 나타납니다).

<input 
    type="text" 
    [value]="value"/> 

onChange() 메서드가 호출 될 것입니다 정확히 그런 경우 왜 이해가 안 돼요.

Here is a plnkr

+0

당신의 plunker 흐림에 ** **의 onChange() 트리거되지 않습니다. – Swoox

+0

@Swoox 콘솔을 확인합니다. 또한 입력 내용을 변경해야하지만 흐려질 때 이벤트가 실행됩니다. 이 질문이 명확하지 않아 편집했습니다. – Ced

+0

** ControlValueAccessor **의 "onChange"에서 console.log를 사용하고 구성 요소의 기능을 제거하면 어떻게됩니까? 그럴 가능성은 무엇입니까? 추상 클래스가 함수를 덮어 쓰고 onblur 이벤트로 트리거합니다. 보낸 이벤트는 그대로 유지됩니다. – Swoox

답변

2

(change)

입력 값의 변화가 새로운 값 모델에 전념되도록

트리거한다.

하지만이 경우 모델을 사용하고 있다고 생각하지 않습니다.

입력 내용을 입력 할 때마다 원하는 작업을 수행하기 때문에 대신 (keyup)을 사용합니다.

<input-app [value]="'hey'" placeholder="your name" (keyup)="onChange($event)"></input-app> 
+0

나는 나의 대답을 편집하여 더 많은 설명을했습니다. –

0

나는 약간 부끄러 웠지만 사건은 막 거품이 난다.

same with keyup event

:

@Component({ 
    selector: 'my-app', 
    template: ` 
    <div (keyup)="onKeyUp()"> 
     <input/> 
    </div> 
    `, 
}) 
export class App {  
    onKeyUp() { 
    console.log('it bubbles') 
    } 
}