在第一页加载中,如何从指令中知道当前路由是什么?
不确定这是一个错误,还是我没有正确配置.我有一个指令,可以注入路由器.我在监听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类,如果该元素与当前路由匹配.我猜测路由器的指令是要走的路,但也许有更好的东西.
也许您需要等待路由完成:
var subscription;
subscription = router.onRouteStart.listen((e) {
subscription.cancel();
e.completed.then((_) {
toggleActive();
});
});
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
309 次 |
| 最近记录: |