路由器无法在Angular4 + Cordova中使用监听器(" renderer2")进行正常导航,

时间:2017-08-25 03:26:10

标签: angular cordova renderer

说明

  1. 在项目中,我们将设置Android手机"后退按钮"通过cordova界面发起的事件(文件事件)。
  2. 结果:

    1. 点击"后退按钮"后,视图变为空白。
    2. 路由器出口控制台成功更改为/ home(我已完成一些登录:router-outlet活动事件)
    3. 当查看为空白(我认为它确实改变了路线)时,我点击差异路由器 - 插座(页脚),然后会出现家庭!
    4. PS:

      1. 如果我没有使用renderer2监听器,router.navigate运行良好
      2. 代码:

        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');
          }
        

        }

1 个答案:

答案 0 :(得分: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'])
    }
  )
}