我在顶部导航栏中放下位置。在更改位置时,我必须基于该位置数据加载整个应用程序,因此我需要刷新所有组件数据,这就是为什么我要执行此步骤。
core.js:5847错误错误:未捕获(承诺中):错误:无法匹配 任何路线。 URL段:“ RefreshComponent”错误:无法匹配任何 路线。网址段:“ RefreshComponent”
constructor(
private router: Router,
) { }
我已经使用JavaScript setTimeout(() => { location.reload(); });
正常工作,我不想重新加载页面,只想刷新我在下面的代码中尝试过的组件。但是当我使用控制台时出现错误。
changeLocation(locationData) {
this.router.navigateByUrl('/RefreshComponent', { skipLocationChange: true }).then(() => {
this.router.navigate([this.router.url]);
});
}
我缺少任何配置吗??
答案 0 :(得分:4)
您的路由配置中可能没有RefreshComponent
路由。
就刷新组件而言,只需按如下所示修改函数,就不需要RefreshComponent
路由。
将navigateByUrl('/RefreshComponent',...
替换为navigateByUrl('/',...
changeLocation(locationData) {
// save current route first
const currentRoute = this.router.url;
this.router.navigateByUrl('/', { skipLocationChange: true }).then(() => {
this.router.navigate([currentRoute]); // navigate to same route
});
}
答案 1 :(得分:0)
这是您要找的链接。
https://medium.com/@rakshitshah/refresh-angular-component-without-navigation-148a87c2de3f
根据链接。
mySubscription: any;
在组件的构造函数中添加以下内容。
this.router.routeReuseStrategy.shouldReuseRoute = function () {
return false;
};
this.mySubscription = this.router.events.subscribe((event) => {
if (event instanceof NavigationEnd) {
// Trick the Router into believing it's last link wasn't previously loaded
this.router.navigated = false;
}
});
并确保像下面这样取消订阅“ mySubscription”
ngOnDestroy() {
if (this.mySubscription) {
this.mySubscription.unsubscribe();
}
}