Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/462.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 重新加载路由不会刷新api调用_Javascript_Angular_Angular2 Routing - Fatal编程技术网

Javascript 重新加载路由不会刷新api调用

Javascript 重新加载路由不会刷新api调用,javascript,angular,angular2-routing,Javascript,Angular,Angular2 Routing,我试图在Angular 7中构建一个功能,在这里我单击一个刷新按钮,重新加载路由(而不是重新加载页面)并刷新数据(我相信这将意味着再次进行所有api调用) 刷新单击在公共组件中实现,并在应用程序中的所有位置使用。在我使用的公共组件的构造函数中: this.someVariable = this.router.events.subscribe((event) => { if (event instanceof NavigationEnd) { this.urlToRefresh

我试图在Angular 7中构建一个功能,在这里我单击一个刷新按钮,重新加载路由(而不是重新加载页面)并刷新数据(我相信这将意味着再次进行所有api调用)

刷新单击在公共组件中实现,并在应用程序中的所有位置使用。在我使用的公共组件的构造函数中:

this.someVariable = this.router.events.subscribe((event) => {
  if (event instanceof NavigationEnd) {
    this.urlToRefresh = event.urlAfterRedirects;
  }
});
然后单击refresh,我称之为.router.navigateByUrl(this.urlToRefresh)


这看起来确实会重新加载路由,但不会重新加载API,因此数据不会刷新。是否有任何错误,或者是否有任何其他方法可以在不刷新页面的情况下实现此功能。

假设您有两个函数,其中每个函数都进行api调用。假设函数名为
functionOneApi()
functionTwoApi()

并创建一个单独的函数,在这个函数中,您只需再次调用这两个函数就意味着再次调用api

functionCalls(){
   functionOneApi();
   functionTwoApi()
}

假设您有两个函数,其中每个函数都进行api调用。假设函数名为
functionOneApi()
functionTwoApi()

并创建一个单独的函数,在这个函数中,您只需再次调用这两个函数就意味着再次调用api

functionCalls(){
   functionOneApi();
   functionTwoApi()
}

路由器中有一个属性将导致路由重新加载

在主路由模块中:(通常app routing.module.ts或在app.module.ts内部)

@NgModule({
进口:[
RouterModule.forRoot(
路线,
{onSameUrlNavigation:'重新加载'}
)
],
导出:[路由模块],
})
您必须在ameurlnavigation上设置选项“重新加载”
。这将导致在导航到同一路线时重新加载路线

如何处理对当前URL的导航请求。其中一项:

  • “忽略”:路由器忽略请求
  • “重新加载”:路由器重新加载URL。用于实现“刷新”功能

路由器中有一个属性将导致路由重新加载

在主路由模块中:(通常app routing.module.ts或在app.module.ts内部)

@NgModule({
进口:[
RouterModule.forRoot(
路线,
{onSameUrlNavigation:'重新加载'}
)
],
导出:[路由模块],
})
您必须在ameurlnavigation上设置选项“重新加载”
。这将导致在导航到同一路线时重新加载路线

如何处理对当前URL的导航请求。其中一项:

  • “忽略”:路由器忽略请求
  • “重新加载”:路由器重新加载URL。用于实现“刷新”功能

这里没有足够的信息供任何人有效地帮助您。我们需要查看处理数据获取的代码。然而,我建议在这里研究“生命周期挂钩”:这里没有足够的信息可以让任何人有效地帮助您。我们需要查看处理数据获取的代码。不过,我建议您在这里查看“生命周期挂钩”:感谢您的帮助Fahad,但我认为window.location.reload();将重新加载页面。我不想重新加载页面,只想用新数据刷新页面。通过重新加载路由是不可能的吗?那么这是否意味着.router.navigateByUrl(“some_URL”)不进行api调用来刷新数据?感谢您的帮助,Fahad,但我认为window.location.reload();将重新加载页面。我不想重新加载页面,只想用新数据刷新页面。重新加载路由不可能吗?这是否意味着。router.navigateByUrl(“某些URL”)不进行api调用来刷新数据?