Angular2 Safari后退按钮

时间:2016-04-14 08:33:14

标签: safari angular angular2-routing

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

我也遇到过这个问题,虽然这很好但是在Chrome上。

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

3 个答案:

答案 0 :(得分:5)

On“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());
        });
    }
}

答案 1 :(得分:2)

此错误有部分解决方法:

  1. RouterApplicationRef注入应用程序组件
  2. 订阅路由器更改并触发完整组件树检查:
  3.     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();
        });
    

答案 2 :(得分:0)

angular2 - 2.15.8

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

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