Dart 角省道中路径参数的访问

Dart 角省道中路径参数的访问,dart,angular-dart,Dart,Angular Dart,我有一个非常简单的路由案例,它不涉及将视图映射到路由。相反,我想解析route/uri并设置控制器中某个变量的值。因此,例如,如果路由是#/foo,我想设置一个值,如果路由是#/bar,我想设置另一个值 我没有一个简单的模式来做这件事。目前,我正在控制器中执行以下操作: TodoController(this.http、this.scope、this.router){ router.onRouteStart.listen((RouteStartEvent事件){ 事件。已完成。然后((结果){

我有一个非常简单的路由案例,它不涉及将视图映射到路由。相反,我想解析route/uri并设置控制器中某个变量的值。因此,例如,如果路由是
#/foo
,我想设置一个值,如果路由是
#/bar
,我想设置另一个值

我没有一个简单的模式来做这件事。目前,我正在控制器中执行以下操作:

TodoController(this.http、this.scope、this.router){
router.onRouteStart.listen((RouteStartEvent事件){
事件。已完成。然后((结果){
如果(结果){
如果(event.uri='/foo'){
myVar=。。。
}else if(event.uri=='/bar'){
myVar=。。。
}否则{
// ...
}
}
});
});
}

这给我的印象是一个笨拙的方法,但我没有想出更好的方法。有谁知道我如何监控控制器中的路线更改吗?

您可以这样做:

bool-isFoo=false;
bool-isBar=false;
根路由器
…addRoute(
名称:“foo”,
路径:'/foo',
输入:()=>isFoo=true,
离开:()=>isFoo=false)
…addRoute(
名称:'酒吧',
路径:'/bar',
输入:()=>isBar=true,
离开:()=>isBar=false);
如果您希望在稍后阶段(例如在组件/控制器内部)侦听路由更改,请按以下方式执行:

类MyController实现了NgDetachAware{
bool-isFoo=false;
bool-isBar=false;
路由句柄;
常规手柄;
MyController(路由器){
foodhandle=router.root.getRouter('foo').newHandle();
foodhandle.onEnter.listen((\u)=>isFoo=true);
foodhandle.onLeave.listen(((u)=>isFoo=false);
barHandle=router.root.getRouter('bar').newHandle();
barHandle.onEnter.listen(()=>isBar=true);
barHandle.onLeave.listen(()=>isBar=false);
}
分离(){
foodhandle.discard();
barHandle.discard();
}
}

请注意,在本例中,我使用的是
RouteHandle
,它可以帮助我们在控制器被破坏时清理所有侦听器。

谢谢,Pavel,非常有用。