angular - 如何使用带有命名路由器出口和 url 参数的 Router.navigate()
问题描述
我在使用命名路由器插座时遇到了麻烦,我认为我用错了,尽管我假设我遵循了 angular 文档:
路由器配置:
const routes: Routes = [
{path: 'checktypes', component: ChecktypeComponent},
{path: 'checktypes/:id', component: ChecktypeDetailsComponent, outlet: 'checktypeDetails'},
];
模板ChecktypeComponent
:
...
<router-outlet name="checktypeDetails"></router-outlet>
...
在ChecktypeComponent
(在路线上/checktypes
):
this.router.navigate([{outlets: {checktypeDetails: ['checktypes', 1]}}]);
为了简单起见,我对 id 1 进行了硬编码。我总是得到错误Cannot match any routes. URL Segment: 'checktypes/1'
。我尝试了很多东西,但我无法让它工作。我究竟做错了什么?
解决方案
您可以使用如下
对于像这样的路线
{
path: 'update-book/:book-id',
component: BookUpdateComponent,
outlet: 'bookPopup'
}
您可以导航为
this.router.navigate([{ outlets: { bookPopup: [ 'update-book', book.id ] }}]);
这样你就可以将参数传递给 URL 并且 URL 变成了
http://localhost:4200/book(bookList:book-detail//bookPopup:add-book)
推荐阅读
- mongodb - 将 ReactiveMongoTemplate 与 Kotlin 协程一起使用
- javascript - 如何使用 React Redux 插入带有帖子的数据?
- java - 尝试在 Java 中将 String 值转换为 Double 时出现异常
- go - 如何等待回调函数返回?
- html - 我可以将@mixin 存储在任何其他文件(_file.scss)中还是只能将其存储在主文件中?
- optimization - 如何在 tensorflow 自定义优化器中指定自定义权重更新
- python - 为什么我针对 Project Euler 问题的 python 解决方案不起作用?
- android - 无法访问 android.support.v4.app.Fragment 'com.android.youtube.player.YoutubePlayerSupportFragment 检查模块类路径的超类型
- python - 在 python discordpy 中加载扩展
- firebase - Firebase 授权持久性和 API 调用的最佳实践