2017-08-25 78 views
0

說明:路由器不能正常使用監聽器Angular4 +科爾多瓦導航(「renderer2」),

  1. 在項目中,我們將設置Android手機的「後退按鈕」事件通過科爾多瓦接口發射(文檔事件)。

結果:

  1. 後,我點擊 「返回」 按鈕,視圖轉空。 (我已經做了一些登錄:路由器插座活動事件)
  2. 當查看到空白(我以爲它確實改變了路線),我點擊diff路由器 - 出口(頁腳),並且家會出現!

PS:

  1. router.navigate工作做好,如果我沒有使用renderer2聽衆

代碼:

constructor(private render: Renderer2, private router: Router,) { 
this.render.listen('document', 'backbutton',()=>{ 
    this.backButtonEvent(); 
}) 

}

private backButtonEvent(){ 
this.router.navigate(['/home']).then(
()=>{ 
    console.error('Navigate success'); 
    }, 
()=>{ 
    console.error('Navigate failed'); 
    } 

}

回答

0

使用zone.run解決了我的問題。

ngZone維持重新呈現角度。

我猜我遇到的問題是由角度外的事件監聽器引起的,但是,我的回調會影響視圖。

因此,zone.run()強制重新渲染視圖。

constructor(
    private render: Renderer2, 
    private _zone: NgZone 
) { 
    this.render.listen('document', 'backbutton',()=>{ 
     this.backButtonEvent(); 
    }) 
    } 

private backButtonEvent(){ 
    this._zone.run(
    () => { 
     this.router.navigate(['/home']) 
    } 
) 
}