Angular Dart中的分层路由参数

时间:2015-01-12 21:22:58

标签: dart angular-dart

我有这个简单的测试设置:带有参数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

1 个答案:

答案 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;
}