Dart Angular 5 router child redirectTo 需要 parent 参数
Dart Angular 5 router child redirectTo needs parent parameter
我们需要将一个 child 路由重定向到另一个 child 路由并维护一个 parent 路由参数。例如,将路由 /u/2/object/123
重定向到 /u/2/list
。路由(对于这个简化示例)由 parent 和 child RouteDefinition
级别处理。 parent 定义为
RouteDefinition(path: 'u/:index', component: ...
child 会是
RouteDefinition(path: 'list', component: ...
RouteDefinition(path: 'object/:id', component: ...
RouteDefinition.redirect(path: '.*', redirectTo: 'u/:index/list')
运行 此 returns 错误 FormatException: :index
因此当前似乎不支持 redirectTo URL 中的参数。也不支持相对路由。
我们正在使用 Dart Angular 5,因此必须在任何路由器事件触发之前定义 RouteDefinitions
并将其提供给 router-outlet
。这似乎排除了在 child 级别使用程序重定向。除了覆盖顶级路由器之外,还有其他解决方案吗?
我创建了一个仅在其 CanActivate
处理程序中重定向的组件。 child RouteDefinition
使用组件而不是 .redirect
:
new RouteDefinition(path: '.*', component: RedirectTo.RedirectToNgFactory),
我有RoutePath
个定义:
final user = new RoutePath(path: 'u/:index');
final list = new RoutePath(parent: user, path: 'list');
组件的 CanActivate
处理程序被赋予路由路径和参数。它总是做 router.navigate
:
@Component(
selector: 'redirect-to',
template: '',
)
class RedirectTo implements CanActivate {
final Router router;
RedirectTo(this.router);
Future<bool> canActivate(RouterState current, RouterState next) async {
router.navigate( list.toUrl(parameters: next.parameters) );
return false;
}
}
我们需要将一个 child 路由重定向到另一个 child 路由并维护一个 parent 路由参数。例如,将路由 /u/2/object/123
重定向到 /u/2/list
。路由(对于这个简化示例)由 parent 和 child RouteDefinition
级别处理。 parent 定义为
RouteDefinition(path: 'u/:index', component: ...
child 会是
RouteDefinition(path: 'list', component: ...
RouteDefinition(path: 'object/:id', component: ...
RouteDefinition.redirect(path: '.*', redirectTo: 'u/:index/list')
运行 此 returns 错误 FormatException: :index
因此当前似乎不支持 redirectTo URL 中的参数。也不支持相对路由。
我们正在使用 Dart Angular 5,因此必须在任何路由器事件触发之前定义 RouteDefinitions
并将其提供给 router-outlet
。这似乎排除了在 child 级别使用程序重定向。除了覆盖顶级路由器之外,还有其他解决方案吗?
我创建了一个仅在其 CanActivate
处理程序中重定向的组件。 child RouteDefinition
使用组件而不是 .redirect
:
new RouteDefinition(path: '.*', component: RedirectTo.RedirectToNgFactory),
我有RoutePath
个定义:
final user = new RoutePath(path: 'u/:index');
final list = new RoutePath(parent: user, path: 'list');
组件的 CanActivate
处理程序被赋予路由路径和参数。它总是做 router.navigate
:
@Component(
selector: 'redirect-to',
template: '',
)
class RedirectTo implements CanActivate {
final Router router;
RedirectTo(this.router);
Future<bool> canActivate(RouterState current, RouterState next) async {
router.navigate( list.toUrl(parameters: next.parameters) );
return false;
}
}