2017-10-21 3 views
0

이벤트 lisitener 이벤트로 Ionic Page를 누르면 데이터 바인딩이 중단된다는 문제가 있습니다.각도 4 양방향 데이터 바인딩이 EventListener로 끊어짐

ionViewDidLoad() { 
document.addEventListener('admob.rewardvideo.events.REWARD',() => { 
    this.goToScriptedGame(); 
}); 

사용자는 페이지에 액세스하기 전에 광고 비디오를 시청해야합니다.

슬프게도 {{title}}과 같은 모든 양방향 바인딩은 더 이상 변경되지 않으며 init 값만 표시합니다.

"장치"뒤로 버튼 (특정 시점에서 비활성화 됨)을 누르면 값이 올바르게 표시된다는 것을 발견했습니다.

변수 자체는 모두 정확하고 모든 것이 잘 작동하지만 깨진 바인딩입니다.

답변

1

document.addEventListener을 통해 이벤트에 바인딩하려는 경우 수동으로 변경 감지를 트리거해야합니다. 그렇지 않으면 각도가 알지 못합니다.

아마도 전체 구성 요소 트리 변경 감지를 유발하는 ApplicationRef#tick()을 찾고있을 것입니다.

import { ApplicationRef } from '@angular/core'; 

constructor(private appRef: ApplicationRef) {} 

ionViewDidLoad() { 
    document.addEventListener('admob.rewardvideo.events.REWARD',() => { 
    this.goToScriptedGame(); 
    this.appRef.tick(); 
    }); 
} 

은 더 많은 정보와 다른 가능성이 질문을 참조 : Triggering Angular2 change detection manually

1
import { Component, NgZone } from '@angular/core'; 

constructor(public zone: NgZone) {} 

ionViewDidLoad() { 
document.addEventListener('admob.rewardvideo.events.REWARD',() => { 
    this.zone.run(() => 
    this.navCtrl.push("ScriptedPage") 
); 
}); 

NgZone 나를 위해 완벽하게 만들어! 이 게시물에 링크 해 주셔서 감사합니다.

제공된 솔루션이 제대로 작동하지 않았지만 아이디어가 정확했습니다.

관련 문제