gpt4 book ai didi

angular - 未触发对 ActivatedRoute.params 的订阅

转载 作者:行者123 更新时间:2023-12-03 23:17:07 24 4
gpt4 key购买 nike

问题是当我在两个相似的 URL 之间导航时,我的组件没有重绘。例如,当用户查看 http://localhost:8088/#/app/route/study/6/detail 时然后导航到 http://localhost:8088/#/app/route/study/7/detail , StudyComponent已正确重新加载。然而,DetailComponent未重装 .我认为原因是params的细节没有改变,所以 Angular 认为不重新加载是可以的。但在我的情况下,细节取决于父参数。

我怎样才能解决这个问题?

我的路线:

const studyRoutes: Routes = [
{
path: '', component: RouteComponent,
children: [
{path: 'study/:id', component: StudyComponent,
children: [
{path: 'detail', component: DetailComponent },
{path: 'parts', component: PartsComponent }
]
}
]
}
];

我所有的组件都是这样初始化的:
ngOnInit() {
this.loader = this.route.params.subscribe(params => this.onLoad());
}

ngOnDestroy() {
this.loader.unsubscribe();
}

当我在不同研究的细节之间导航时, onLoad从未在 DetailComponent 中调用.

最佳答案

:id 的更改使用reactDetailComponent 处的参数级别,您需要进行以下更改:

// detail.component.ts
ngOnInit() {
this.loader = this.route.parent.params.subscribe(params => this.onLoad());
}

这是因为路径 detail在您的 route 定义 :id参数,它的父级。因此,更改会反射(reflect)在路由器状态树中的该级别。

关于angular - 未触发对 ActivatedRoute.params 的订阅,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48650074/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com