Перезагрузить маршрут не обновляет sh API-вызовы - PullRequest
2 голосов
/ 22 января 2020

Я пытаюсь создать функциональность в Angular 7, где я нажимаю кнопку refre sh, которая перезагружает маршрут (не перезагружает страницу) и обновляет данные (я думаю, это будет означать, что все API вызовы снова).

Щелчок refre sh реализован в общем компоненте и используется во всех местах приложения. В конструкторе общего компонента я использовал:

this.someVariable = this.router.events.subscribe((event) => {
  if (event instanceof NavigationEnd) {
    this.urlToRefresh = event.urlAfterRedirects;
  }
});

и затем по щелчку refre sh Я звоню this.router.navigateByUrl (this.urlToRefre sh);

Это похоже на перезагрузку маршрута, но это не перезагрузка API, поэтому данные не обновляются. Что-то не так или есть какой-то другой способ добиться этого без страницы refre sh.

Ответы [ 2 ]

0 голосов
/ 22 января 2020

В Router есть свойство, которое приведет к перезагрузке маршрута.

В вашем основном модуле маршрутизации: (обычно app-routing.module.ts или внутри app.module.ts )

@NgModule({
  imports: [
    RouterModule.forRoot(
      routes,
      { onSameUrlNavigation: 'reload' }
    )
  ],
  exports: [RouterModule],
})

Вы должны установить опцию onSameUrlNavigation: 'reload'. Это приведет к перезагрузке маршрута при переходе к тому же маршруту.

https://angular.io/api/router/Router#onSameUrlNavigation

Как обработать запрос на переход к текущему URL-адресу. Один из:

  • 'ignore': маршрутизатор игнорирует запрос.
  • 'reload': маршрутизатор перезагружает URL. Используется для реализации функции «refre sh».
0 голосов
/ 22 января 2020

Допустим, у вас есть 2 функции, в каждой из которых вы выполняете вызовы API. Предположим, что обе функции имеют имена functionOneApi() и functionTwoApi().

И создадим отдельную функцию, в которой вам нужно просто снова вызвать обе функции, что означает повторный вызов api.

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