Здесь In Angular, когда я на странице входа в систему в то время мой URL-адрес входа в систему http://localhost:3000/login
, и теперь я изменяю без входа в систему, как это http://localhost:3000/base/dashboard (this is right url)
, поэтому без входа в систему он не перенаправляет на страницу панели инструментов, это вход в систему на странице входа в систему, но когда я поставить неправильный URL без логина, как это http://localhost:3000/defrtfg
, но он перенаправляет на pageNotFoundComponent(see below screenshot)
, но я хочу перенаправить на страницу входа, когда я не вошел в систему, как это возможно?
Authgaurd.guard.ts
import { Injectable } from '@angular/core';
import { CanActivate, ActivatedRouteSnapshot, RouterStateSnapshot, Router, ActivatedRoute } from '@angular/router';
import { Observable } from 'rxjs';
import { UserService } from './services/user.service';
@Injectable({
providedIn: 'root'
})
export class AuthguardGuard implements CanActivate{
constructor (private router : Router) {}
canActivate(
next: ActivatedRouteSnapshot,
state: RouterStateSnapshot): Observable<boolean> | Promise<boolean> | boolean {
if(localStorage.getItem('username')){
return true;
}else{
this.router.navigate(['/login']);
return false;
}
}
}
приложение-routing.module.ts
const routes: Routes = [
{ path: '', redirectTo: 'login', pathMatch: 'full' },
{ path: 'login', component : LoginFormComponent },
{ path : 'base', component : BaseComponent,canActivate : [AuthguardGuard],
children: [
{ path: '', redirectTo: 'dashboard', pathMatch: 'full' },
{ path: 'dashboard', component : DashboardComponent },
]},
{ path: '**', component : PageNotFoundComponent },
];