在第一页加载时,如何从指令(AngularDart)中知道当前路由是什么?

Set*_*add 5 dart angular-dart

在第一页加载中,如何从指令中知道当前路由是什么?

不确定这是一个错误,还是我没有正确配置.我有一个指令,可以注入路由器.我在监听router.onRouteStart事件,当我最初重新加载页面时,不会触发routeStart事件.当我手动触发路由更改时,我确实获得了routeStart事件.

我的指令如下:

@NgDirective(
    selector: '[current-route]'
)
class CurrentRoute {
  Router router;
  Element element;

  CurrentRoute(this.element, this.router) {
    toggleActive();

    router.onRouteStart.listen((e) {
      toggleActive();
    });
  }

  bool isRoute() {
    print(router.activePath);
    print(router.root);
    if (router.activePath.isEmpty) return false;
    return element.attributes['current-route'] == router.activePath.first.name;
  }

  void toggleActive() {
    if (isRoute()) {
      element.classes.add('active');
    } else {
      element.classes.remove('active');
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

当我第一次

print(router.activePath);   // empty list
print(router.root);  // null
Run Code Online (Sandbox Code Playgroud)

基本上,我想在元素上设置一个CSS类,如果该元素与当前路由匹配.我猜测路由器的指令是要走的路,但也许有更好的东西.

pav*_*lgj 4

也许您需要等待路由完成:

var subscription;
subscription = router.onRouteStart.listen((e) {
  subscription.cancel();
  e.completed.then((_) {
    toggleActive();
  });
});
Run Code Online (Sandbox Code Playgroud)