角度刷新组件

时间:2019-11-26 05:56:53

标签: angular

我在顶部导航栏中放下位置。在更改位置时,我必须基于该位置数据加载整个应用程序,因此我需要刷新所有组件数据,这就是为什么我要执行此步骤。

  

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]);
    }); 
}

我缺少任何配置吗??

2 个答案:

答案 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();
 }
}