【问题标题】:Angular2 Safari Back ButtonAngular2 Safari后退按钮
【发布时间】:2017-03-13 16:55:36
【问题描述】:

在实际的 Angular2 beta 14(及之前)中,Safari(实际使用 9.1)上的后退按钮(使用路由和多个视图时)似乎存在问题:https://github.com/angular/angular/issues/7722

我也遇到过这个问题,虽然这很好用,例如在 Chrome 上。

我正在寻找解决方法,直到问题得到解决?

【问题讨论】:

    标签: safari angular angular2-routing


    【解决方案1】:

    在“angular2”上:“2.0.0-beta.14”

    我必须在区域内运行滴答声才能让它为我工作。

    import {ApplicationRef, <anything else you need>} from 'angular2/core';
    import {Router,<anything else you need>} from 'angular2/router';
    
    export class AppComponent {
        constructor(private _ref: ApplicationRef, private _router: Router) {
            _router.subscribe((value) => {
                _ref.zone.run(() => _ref.tick());
            });
        }
    }
    

    【讨论】:

      【解决方案2】:

      此错误有部分解决方法:

      1. RouterApplicationRef注入应用组件
      2. 订阅路由器更改并触发完整的组件树检查:
          router.subscribe((value)=>
          {
              //todo: check browser UA or any other parameters to detect back button, i.e. if (safari) {}
      
              //trigger change that will invoke init methods
              appRef.tick();
          });
      

      【讨论】:

        【解决方案3】:

        angular2 - 2.15.8

        constructor(private _ref: ApplicationRef, private _router: Router) {
                _router.events.subscribe((value) => {
                    _ref.zone.run(() => _ref.tick());
                });
            }
        

        不推荐使用_router.subscribe,并将在_router 上抛出未定义函数 .subscribe()。

        【讨论】:

        • 你试过_router.params.subscribe(params =&gt; { ... });
        猜你喜欢
        • 2014-10-07
        • 2010-09-06
        • 1970-01-01
        • 2012-08-12
        • 1970-01-01
        • 2016-12-08
        • 2011-06-17
        • 2013-12-26
        • 2012-05-14
        相关资源
        最近更新 更多