Это в основном та же стратегия, что и перенаправление на вход в систему, если пользователь не вошел в систему. Вы можете использовать CanActivate
, который выполняет перенаправление маршрутизатора, но не блокирует изменение маршрута (т. Е. Всегда разрешает true
).
@Injectable()
export class CanActivateStart implements CanActivate {
public constructor(private _router: Router) {
}
public canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): boolean {
if(!(route.component instanceof StartComponent)) {
this._router.navigateByUrl('/start');
}
return true;
}
}
Может показаться странным всегда возвращать true
, но если вы вернете false
, это отменяет изменение маршрута и в то же время блокирует navigateByUrl()
.
Поместите это на верхний уровень конфигурации маршрутизатора, и оно будет выполнено только один раз. Когда браузер обновляется, он запускает перенаправление.
const routes = [
{
canActivate: [CanActivateStart],
children: [
// the routes you want to force a redirect
]
}, {....}
]