angular - 角度路由参数
问题描述
如何根据路由参数的值加载不同的组件?我希望将逻辑写入路由模块。
我试过但没有找到任何关于如何在路由模块中实现它的东西。
类似的东西:如果类型是“总和” -
[path: 'detail/:type', component: SumComponent]
否则,如果类型是 'sub' -
[path: 'detail/:type', component: SubComponent]
解决方案
嗨,是的,您可以实现它,但需要一些肮脏的技巧。就像我在这里做的一样。
在这里如何做到这一点:
首先,您需要像我在这里一样创建一个组件并将其命名为 MainComponent:
主要组件.ts
export class MainComponent implements OnInit {
type: TypeOfDetails;
typeOfDetail = TypeOfDetails;
constructor(
private route: ActivatedRoute
) {
this.type = this.route.snapshot.paramMap.get('type') as TypeOfDetails;
}
ngOnInit() {
}
}
main.components.html
<span [ngSwitch]="type">
<p *ngSwitchCase="typeOfDetail.SUB">
<app-sub></app-sub>
</p>
<p *ngSwitchCase="typeOfDetail.SUM">
<app-sum></app-sum>
</p>
<p *ngSwitchDefault>
<span>Sorry Not available the component</span>
</p>
</span>
路由器代码
const routes: Routes = [
{
path: 'detail/:type',
component: MainComponent
}
];
现在你可以传递你的路由器参数,@Input()
所以它也可以工作。
如果您对代码有任何疑问,请告诉我。
快乐编码:)
推荐阅读
- python - Docker-compose 无法连接静态 ip
- pycharm - 在 PyCharm 中运行 odoo 项目
- javascript - 更新地图循环中的特定项目
- regex - 如何从 csv 文件中的时间戳列中提取特定年份
- javascript - 如何从浏览器链接或提示打开 nodejs 应用程序
- node.js - 将 .zip 文件从 AWS farget 容器上传到 Amazon S3 时出错。但在本地它按预期工作
- laravel - Laravel - 编辑时以模态显示图像
- sql-server - Visual Studio 2017 插件问题?
- python - 如何在一列中填充类别并将确切值粘贴到另一列中
- ssl - 什么决定了密码套件?