2016-07-25 4 views
1

부품의 부모에서의 함수 내에서 이미 터를 통과하는 경우 (템플릿) 방출 할 수있는 방법I는 각도 2

<CHILD></CHILD> 
<overlayer *ngIf="showPopup" (evTogglePopup)="onShowPopup($event)"></overlayer> 

부품 CHILD (@Component를)

@Output() evTogglePopup = new EventEmitter(); 
... 
this.inputUt.ajaxCheckExistingEmail(email, this.evTogglePopup); 

MyInputUtility의 연료 소모량 (공급자 @Injectable 아동으로 수입 및 사용이) :

ajaxCheckExistingEmail(email, evEmitter:EventEmitter<any>){ 
     if (email.valid){ 
      return this.http.post(
       GLOBAL_CONST.apiPath + "/user/user/api-check-user-email", 
       'email=' + email.value, 
       {headers: this.headers} 
      ).map(response => response.json()) 
      .subscribe(val => { 
       console.log(val); 
       if(val.emailExists){ 
        evEmitter.emit(true); 
       } 
      }); 
     } 
} 

이 "솔루션"작동하지 않습니다, 나는 내가 궁금 evEmitter가 복사에 의해 ajaxCheckExistingEmail 함수에 전달되기 때문입니다. 자신
문제로

Sosterd는 "상지"다른 선택 양식이라고했다 그 아이 (선택)에 의해 지적, 나는 그것뿐만 아니라 일을 한 것이라고 생각 하나.

나는 다음과 같이 변경되어 지금은 작동합니다 @Output()에서

<CHILD (evTogglePopup)="onShowPopup($event)"></CHILD> 
    <overlayer *ngIf="showPopup"></overlayer> 
+0

'evTogglePopup'은 객체이며 객체는 복사로 전달되지 않고 참조로 전달됩니다. 작동하지 않는 것은 무엇입니까? 어떻게 작동하지 않습니까? –

+0

이벤트 리스너가 포함 된 구성 요소에서 "evEmitter.emit (true)"이후에 이벤트가 방출되지 않았 음 – Donovant

+0

질문 업데이트 – Donovant

답변