Я работаю над проектом Angular. У меня проблемы с обновлением компонента.
Я хочу обновить компоненты маршрутизатора нажатием кнопки. У меня появляется кнопка обновления, когда я нажимаю на нее, компонент / маршрутизатор необходимо обновить.
Я пробовал, window.location.reload()
и location.reload()
эти два мне не подходят. Пожалуйста, помогите, если кто-нибудь знает об этом.
angular
routes
components
refresh
Шрихари Баллампалли
источник
источник
Ответы:
После некоторого исследования и изменения моего кода, как показано ниже, сценарий у меня сработал. Я просто добавил условие:
источник
"your actualComponent"
на переменную. Переменная установлена в значениеthis.location.path()
перед вызовомnavigateByUrl
. Таким образом, не нужно передавать какие-либо параметры от вызывающего компонента или дублировать / передавать маршруты.'/'
where/RefrshComponent
is, и[Your actualComponent"]
вам просто нужно передать URL-адрес (и / или параметры), который вы хотите перезагрузить, напримерthis.router.navigate(["/items"])
. Этот взлом, по сути, перенаправляет на верхний URL-адрес, а затем очень быстро возвращается к предполагаемому URL-адресу, который незаметен для большинства пользователей и, по-видимому, является самым элегантным взломом для простого достижения этой цели.'/'
качестве фиктивного маршрута, он идет (черезredirectTo
) туда, где мой app-routing.module.ts перенаправляется на путь''
(пустая строка) и останавливается, не переходя к маршруту завершения вnavigate()
вызове. Если я использую несуществующую строку (например/foo
) в качестве фиктивного маршрута, она идет (черезredirectTo
) туда, где мой app-routing.module.ts перенаправляет**
(все остальное), и снова останавливается, не переходя на реальный маршрут. Любопытно, что строка URL-адреса ДЕЙСТВИТЕЛЬНО меняется на реальный маршрут. Есть мысли о том, что здесь другого?Используйте this.ngOnInit (); чтобы перезагрузить тот же компонент вместо перезагрузки всей страницы !!
источник
Добавление этого кода в конструктор необходимого компонента сработало для меня.
Убедитесь, что
unsubscribe
из этой моей подписки вngOnDestroy()
.Обратитесь к этой теме для получения более подробной информации - https://github.com/angular/angular/issues/13831
источник
К счастью, если вы используете Angular 5.1+, вам больше не нужно внедрять хакерство, поскольку была добавлена встроенная поддержка. Вам просто нужно установить onSameUrlNavigation на «перезагрузку» в параметрах RouterModule:
Более подробную информацию можно найти здесь: https://medium.com/engineering-on-the-incline/reloading-current-route-on-click-angular-5-1a1bfc740ab2
источник
router.onSameUrlNavigation = 'reload'
свойство внедренного маршрутизатора.onSameUrlNavigation
оно предназначено для повторного вызова Guard / Resolvers, а не для перезагрузки уже маршрутизированных компонентов. См. Github.com/angular/angular/issues/21115 для получения дополнительной информации. Это решение будет работать для более крупных и сложных приложений, использующих Guards / Resolvers, но не работает для простых примеров.это немного нестандартно, и я не знаю, поможет ли это вам или нет, но я пробовал
this.ngOnInit();
это функция, поэтому любой код, который у вас есть, будет вызван как обновление.
источник
Еще один способ без явного маршрута:
async reload(url: string): Promise<boolean> { await this.router.navigateByUrl('.', { skipLocationChange: true }); return this.router.navigateByUrl(url); }
источник
Этого можно достичь с помощью взлома: перейдите к некоторому образцу компонента, а затем перейдите к компоненту, который вы хотите перезагрузить.
источник
В моем приложении у меня есть компонент, и все данные поступают из API, который я вызываю в конструкторе компонента. Есть кнопка, с помощью которой я обновляю данные своей страницы. при нажатии кнопки у меня есть данные для сохранения и обновления данных. Итак, чтобы перезагрузить / обновить компонент - в соответствии с моими требованиями - нужно только обновить данные. если это также ваше требование, используйте тот же код, который написан в конструкторе компонента.
источник
просто сделайте это: (для angular 9)
источник
kdo
источник
источник
html файл
ts файл
источник
Просто измените routeReuseStrategy с углового маршрутизатора:
Установите для свойства routerproperty "navigated" значение false:
Затем перейдите к своему компоненту:
После этого восстановите старый / стандартный routeReuseStrategy:
Вы также можете сделать из этого услугу:
источник
В моем случае я хотел
refresh the whole page
вместо простого компонента, вот как я это сделалwindow.location.reload();
источник
router.navigate['/path']
будет перенесет вас только по указанному путииспользования
router.navigateByUrl('/path')
его перезагружает всю страницу
источник
Другой способ обновить (сложный способ) страницу в angular 2, как это , выглядит как f5
источник