Angular2:导航到路由并弹出回 pushState 堆栈的根

Angular2: navigate to a route and pop back to the root of the pushState stack

使用 Angular2 路由,如何导航到某个路由,同时让 pushState 一直弹出回到根目录?

我查看了 Routerrouter.navigate([...]) 方法,但没有找到它。

例如,在 Dart 的 route_hierarchical Router 中,我可以做
router.go('login',{},replace: true,startingFrom:router.root);

在 Angular2 在其路由器中提供此功能之前,这里有一个临时解决方法:

abstract class Hist {
  static int _initialLength;
  // Call this ASAP when app starts.
  static void setAsInitialLength() {
    _initialLength = window.history.length;
  }
  static Future goBackToRoot() async {
    Completer completer = new Completer();
    window.history.go(-(window.history.length-_initialLength));
    Timer.run((){
      completer.complete();
    });
    return completer.future;
  }
}

那我就可以这样用了:

await Hist.goBackToRoot();
router.navigate(['/Main',{}]);