gpt4 book ai didi

javascript - 如何使用 Angular 路由?

转载 作者:行者123 更新时间:2023-11-30 21:07:49 30 4
gpt4 key购买 nike

我有一个页面(比如 page3)可以从其他两个页面访问,比如 page1(父 URL 将是 parent1 - parent1/page1)和页面 2(父 URL 将是 parent2 - parent2/page2)。

由于默认情况下 Angular 会更改 URL,所以我只想在我从第 2 页导航时阻止 URL 更改,并且当我从第 1 页(对于所有具有父 URL 作为 parent1 的页面)导航时,我希望 URL 正常更改。

我们可以这样做

router.navigate('page2',{skipLocationChange: true});

但是由于我有更多页面,如 page4、page5、page6 等,而且我想防止仅针对特定页面更改位置,我该如何在公共(public)位置执行此操作。

最佳答案

您可以订阅特定组件中的路由器事件: https://v2.angular.io/docs/ts/latest/api/router/index/NavigationStart-class.html

在事件处理程序中(导航启动后),您可以检查什么是父 URL 并使用 history.replaceState() 等方法覆盖它

您可以创建全局配置注入(inject),它会定义所有规则(即覆盖哪些 URL,哪些不覆盖)。这样你就不需要重构所有的 router.navigate 而只需在组件类中为每个组件指定一次规则:

constructor(router: Router, overrideUrlService: overrideUrlService) {
router.events.subscribe(event => {
if(event instanceof NavigationStart) {
//have the override logic in some injectable service
overrideUrlService.checkUrl(event.url);
}
}
});

关于javascript - 如何使用 Angular 路由?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46445755/

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