考虑以下路线配置:
route
..addRoute(
name: 'custom',
defaultRoute: true,
path: '/:param1/:param2',
enter: view('view/template.html')
);
我正在将路由器注入控制器并设置router.onRouteStart.listen
,我正在通过router.activePath.last.parameters
访问参数,现在,如果用户输入的路径中不存在param2
,然后我想为param2
分配一个默认值(也替换路线)。我该怎么做呢?
答案 0 :(得分:1)
经过一番探索,在angular.dart.tutorial上找到了这个示例: https://github.com/angular/angular.dart.tutorial/blob/master/Chapter_06/lib/routing/recipe_book_router.dart#L19-L24
具有以下方式(根据我的示例代码进行更改):
route
..addRoute(
name: 'default',
defaultRoute: true,
path: '/:param1',
enter: (RouteEnterEvent e) =>
router.go('custom', {
'param1': router.activePath.last.parameters['param1'],
'param2': 'defaultValue'},
//[Optional, if mounted in a nested route]
//startingFrom: router.root.findRoute('custom_head'),
replace: true))
..addRoute(
name: 'custom',
defaultRoute: true,
path: '/:param1/:param2',
enter: view('view/template.html')
);
如果用户没有为param2提供值,则第一个路由被激活,这将为param2分配一个默认值,并通过替换之前的一个来强制更新url。