2016-06-18 3 views
0

필자는 여러 개의 드롭 다운이있는 페이지를 필터로 가지고 있으며 드롭 다운이 필터링을 업데이트 할 때 함수 수신기를 가지고 있습니다.각도 2 바인딩 대 이벤트 감지

<select [(ngModel)]="filters.foo" (change)="update()">...</select> 
<select [(ngModel)]="filters.bar" (change)="update()">...</select> 
<select [(ngModel)]="filters.quz" (change)="update()">...</select> 
<select [(ngModel)]="filters.lol" (change)="update()">...</select> 
<select [(ngModel)]="filters.wtf" (change)="update()">...</select> 

그러나 내 update() 함수를 실행하면 필터 개체가 아직 업데이트되지 않았습니다.

가 어떻게 update()를 호출 할 수있는 모델이 갱신 된 후에 만 ​​:

This plunker

이 문제 페이지를로드하고 입력에 아무 것도 입력을 보여줍니다?

답변

0

해결책 찾기 : 기본 이벤트를 듣지 않고 ngModelChange 이벤트를 수신합니다.

<select [(ngModel)]="filters.foo" (ngModelChange)="update()">...</select> 

I read somewhere

<!-- THIS DIDN'T WORK FOR ME --> 
<select [ngModel]="filters.foo" (ngModelChange)="update()">...</select> 

처럼 ngModel에서 괄호를 제거 할 수 있습니다하지만이 나를 위해 작동하지 않았다 그래서는 괄호를 떠나 지금은 완벽하게 작동합니다 :)

+1

에게 제 2 조각을 '[property]'가 컴포넌트에서 템플릿으로 만 데이터를 전달하기 때문에 드롭 다운의 옵션을 수동으로 업데이트 할 때'filters.foo'가 업데이트되지 않기 때문에 작동하지 않습니다. 이를 위해서는 템플릿에서 구성 요소로 데이터를 전파하는'(property)'구문을 사용해야합니다. 두 가지 동작이 모두 필요하다면, 첫 번째 스 니펫에서 사용한'[(property)]'를 사용해야한다. 단지 잘못 된 것이 무엇인지 명확히하고 싶었다. – codef0rmer

관련 문제