Вы можете добиться желаемого поведения, используя auth guard в Angular 2 +.
Здесь - хорошая статья, которая объясняет, как вы можете заблокировать определенные маршруты на основе различных условий.
Обновление:
вы можете создать конфигурацию вашего маршрутизатора, как показано ниже.
import { AuthGuardService as AuthGuard } from './auth/auth-guard.service';
export const ROUTES: Routes = [
{
path: 'profile',
component: ProfileComponent,
canActivate: [AuthGuard]
}
];
Тогда ваш AuthGuardService должен выглядеть следующим образом:
import { Injectable } from '@angular/core';
import { Router, CanActivate } from '@angular/router';
import { AuthService } from './auth.service';
@Injectable()
export class AuthGuardService implements CanActivate {
constructor(public auth: AuthService, public router: Router) {}
canActivate(): boolean {
if (!this.auth.isAuthenticated()) {
this.router.navigate(['login']);
return false;
}
return true;
}
}
Следует отметить, что вы можете внедрить любой сервис в свой AuthguardService (сервис Injecting в другой сервис) и создать свою логику.