【问题标题】:Angular 2 routes load different component based on type of parameterAngular 2 路由根据参数类型加载不同的组件
【发布时间】:2017-11-07 03:25:54
【问题描述】:

我需要根据路由参数的类型加载不同的组件。如果路由参数是字符串,则加载一个组件,如下所示,

{ path: 'care/action/:string',component: StringComponent},

如果路由参数是数字,则加载另一个组件,如下所示

{ path: 'care/action/:number', component: NumberComponent},

请注意,URL 将保持不变,只有参数类型会改变。

如何做到这一点?

提前致谢。

【问题讨论】:

  • 使用路由器解析,然后根据解析加载不同的模板。不需要不同的组件不同的模板可以做的事情
  • @RahulSingh,如何根据解析加载模板?
  • 使用新的 if else 角度块或者当你从解析中获取值时,你有两个结构指令,即 ngIf 并检查哪个值是 true,然后显示特定的 div 或块,或者如果你使用模板显示
  • 我们使用的是 Angular2,我认为 new if else block of angular 在这个版本中不可用。
  • 然后使用 normal if else 并使用您订阅解析的变量并检查值并根据您显示正确的块或 div

标签: angular angular2-routing


【解决方案1】:

您可能希望在路由配置中利用 matcher 属性并将匹配函数传递给它。您的匹配器函数将使用正则表达式来检查它是字符串(用于字符串路由)还是数字(用于数字)。

【讨论】:

  • 谢谢。你能指点我一些资源,我可以找到这方面的例子吗?
  • 不幸的是,它还没有记录,但你可以在源代码中看到示例:github.com/angular/angular/blob/…
  • 我找到了一个例子@gist.github.com/matanshukry/22fae5dba9c307baf0f364a9c9f7c115。但我收到错误ERROR in Error encountered resolving symbol values statically. Reference to a local (non-exported) symbol 'routes'. Consider exporting the symbol (position 9:7 in the original .ts file), resolving symbol CareRoutingModule in C:/webserver/GIT/gco2ng/src/app/care /care-routing.module.ts。知道可能导致此错误的原因吗??
猜你喜欢
  • 2021-05-26
  • 2016-12-19
  • 2018-03-20
  • 1970-01-01
  • 2017-09-19
  • 2017-11-20
  • 2019-07-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多