Я тестирую приложение, и при каждом изменении, которое я делаю в js, я хотел бы, чтобы оно загружало домашнюю страницу.
Прямо сейчас, если я нахожусь на определенном маршруте, он перезагрузит этот маршрут.
Есть ли способ принудительно обновить домашнюю страницу в angular?
Одним из подходов может быть добавление защиты маршрута, которая проверяет некоторую глобальную переменную.
Например; сначала создайте службу:
import { Injectable } from '@angular/core';
@Injectable({
providedIn: 'root',
})
export class MyRedirectCheckService {
redirectToHomePage = true;
}
Создайте охрану маршрута, которая использует службу, примерно так:
import { Injectable } from '@angular/core';
import { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';
@Injectable({
providedIn: 'root',
})
export class checkFirstLoadGuard implements CanActivate {
canActivate(
next: ActivatedRouteSnapshot,
state: RouterStateSnapshot,
myRedirectCheckService: MyRedirectCheckService ): boolean {
return myRedirectCheckService.redirectToHomePage;
}
}
Затем добавьте защиту маршрута canActivate на ваш маршрутизатор:
const routes: Routes = [
{ path: 'main', component: MainComponent },
{ path: 'child', component: ChildComponent, canActivate: [CheckFirstLoadGuard]},
{ path: '**', component: AdminDashboardComponent }
]
];
В конструкторе основного компонента обязательно переключите значение:
constructor(myRedirectCheckService: MyRedirectCheckService) {
myRedirectCheckService.redirectToHomePage = false;
}
Это всего лишь один подход, и код не тестируется в контексте реального приложения.
использовать
window.location = ''
вместо
this.router.navigate([''])
принудительно обновить
при использовании внутреннего элемента используйте атрибут href вместо атрибута routerLink
Код… покажи свой код.