dart - AngularDart 路由 : Optional parameter

标签 dart angular-dart angular-routing

是否可以在不设置辅助路由的情况下设置可选路由参数?我想设置一个非常简单的 REST 类型接口(interface),其路径定义如下:
reports/:reportType/:reportId
导航到 reports/:reportType将允许列出指定类型的所有已完成报告并导航到完整路径将显示该特定报告。第一部分我工作得很好,但是我无法确定如何使最后一部分成为可选的。

使用以下路由定义,仅在指定所有参数时才调用 enter 方法:

void routesInit(Router router, RouteViewFactory view) {
  view.configure({
    'report' : ngRoute(
        // :rptId cannot be null (aka not provided)
        path: '/reports/:rptType/:rptId',
        enter: (RouteEnterEvent e) {
          print(e.parameters);
        })
  });
}

我已经尝试了标准类型的可选大括号 :rptId如 parent /reports/:rptType(/:rptId)和方括号/reports/:rptType(/:rptId)但无济于事。

我还尝试了以下方法:

void routesInit(Router router, RouteViewFactory view) {
  view.configure({
    'report' : ngRoute(
        // :rptId cannot be null (aka not provided)
        path: '/reports/:rptType',
        enter: (RouteEnterEvent e) {
          print(e.parameters);
        },
        mount: {
          'report_type' : ngRoute(
            path: '/:rptId',
            enter: (RouteEnterEvent e) {
              print(e.parameters);
              print(e.route.parent.parameters);
          })
        })
  });
}

上面的问题是 reportreport_type输入函数被调用,所以我无法在那里正确设置 View ,因为我需要在 enter 中进行某种检查report 的功能route 来检测是否有子路由,我也不确定如何实现。

是否有更简单的方法来指定可选参数,或者我应该考虑完全改变我想用来减轻嵌套/子参数的路径? (例如:使用类似 reports/type/:rptTypereports/single/:rptId 的东西)

最佳答案

这种情况下的解决方案非常简单。我过度设计了解决方案。简单的修复,只需使用两个顶级路由。

void routesInit(Router router, RouteViewFactory view) {
  view.configure({
    'report' : ngRoute(
        path: '/reports/:rptType',
        enter: (RouteEnterEvent e) {
          print(e.parameters);
      }),
    'report_id': ngRoute(
        path: '/reports/:rptType/:rptId',
        enter: (RouteEnterEvent e) {
          print(e.parameters);
        })
  });
}

关于dart - AngularDart 路由 : Optional parameter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23062739/

相关文章:

events - angulardart 组件 - 调度自定义事件

javascript - Angular - 如何使用延迟加载模块激活 AUX 路由?

angular - 仅在命名路由上路由

angular - 如何在 Angular 5+ Service Workers 中处理路由?

json - 如何在 flutter 中的List <String>中加入2 json值?

forms - dart angular2 - 验证表单中的数字

dart - 由于 shadow dom,带有 bootstrap.js 的 angular.dart 组件失败

flutter - Dart中的ListMultimap与Multimap

database - 从Flutter中的数据库创建FeatureBuilder

dart - 装饰器(范围)/监视功能未调用