Немного сложно сделать что-то настолько простое, но безуспешно пытаясь перезагрузить и воссоздать все родительские и дочерние компоненты с текущим решением.
Angular Router теперь обеспечивает настройку стратегии, чтобы сообщить маршрутизатору, что делатьесли вы переходите по тому же URL-адресу, который этот пользователь предлагает в этой проблеме GitHub .
Прежде всего вы можете настроить, что делать при настройке маршрутизатора (модуля маршрутизатора).
@NgModule({
imports: [RouterModule.forRoot(routes, { onSameUrlNavigation: 'reload' })],
exports: [RouterModule]
})
Или, если вы похожи на меня и не хотите изменять поведение всего модуля маршрутизатора, вы можете сделать это с помощью метода / функции, подобных этой:
reloadComponent() {
this._router.routeReuseStrategy.shouldReuseRoute = () => false;
this._router.onSameUrlNavigation = 'reload';
this._router.navigate(['/same-route']);
}
Конечносначала вы должны вставить Router
в конструктор вашего компонента:
// import { Router } from '@angular/router';
...
constructor(private _router: Router){}
...
Каким-то образом и, как указано @Abhiz , вы должны установить shouldReuseRoute , просто настроив маршрутизатор самостоятельноперезагрузка страницы не работает с этим подходом .
Я использовал функцию стрелки для shouldReuseRoute
, потому что новые правила TSLint не разрешают функции без стрелок.