我有这个简单的测试设置:带有参数A
的路线parA
和带参数B
的子路由parB
。
'A' : ngRoute
(
path : '/A/:parA',
enter: (RouteEnterEvent e)
{
print ('ENTERED A');
e.parameters.keys.forEach(print);
},
mount:
{
'B' : ngRoute
(
path: '/B/:parB',
enter: (RouteEnterEvent e)
{
print ('ENTERED B');
e.parameters.keys.forEach(print);
}
)
}
)
当我去/#/A/1234/B/5678
时,我希望得到
Entered B
parA
parB
相反,我得到
Entered A
parA
Entered B
parB
意味着在B
中创建的组件(其构造函数具有RouteProvider
)无法访问参数parA
。
答案 0 :(得分:1)
似乎与此问题有关https://github.com/angular/route.dart/issues/85。 也许那里列出的解决方法也适合你。
从问题中复制:
作为当前的解决方法,我有一个帮助方法贯穿所有 父路由并将它们添加到RouteEvent。
/// Adds the parameters of all parent routes to [e].
RouteEvent _addParentParams(RouteEvent e) {
// Function to recursively get the parents.
Function recursiveAddParentParams;
recursiveAddParentParams = (Route route) {
// Set the parent parameters to the event.
e.parameters.addAll(route.parameters);
if (route.parent != null) {
recursiveAddParentParams(route.parent);
}
};
recursiveAddParentParams(e.route.parent);
return e;
}