基于角色的Angular 4路由默认页面

标签 angular authentication angular2-routing

我已经定义了我的路线如下:

const appRoutes: Routes = [
 {
  path: 'teacher',
  component: 'TeacherComponent'
 },
{
  path: 'student',
  loadChildren: './components/student/student.module#StudentModule',
  canLoad: [AuthGuard]
},
{ path: '**',   redirectTo: '/' }
];

我想根据登录用户 Angular 色路由我的默认路由。如果是学生,我想默认我的路径:'**' 被重定向到 '/student'。同样,对于教师 Angular 色,我希望它默认为“/teacher”。
如何通过基于 Angular 色默认路由到不同的 url 来实现这个基于 Angular 色的导航?

最佳答案

您可以使用路由解析器。

这是我的一个:

import { Injectable } from '@angular/core';
import { Resolve, ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router';

import { Observable } from 'rxjs/Observable';

import { IMovie } from './movie';
import { MovieService } from './movie.service';

@Injectable()
export class MovieResolver implements Resolve<IMovie> {

    constructor(private movieService: MovieService) { }

    resolve(route: ActivatedRouteSnapshot,
            state: RouterStateSnapshot): Observable<IMovie> {
        const id = route.paramMap.get('id');
        return this.movieService.getMovie(+id);
    }
}

此代码将阻止路由继续,直到检索到电影为止。

您可以执行类似的操作来检索您的 Angular 色。然后,您可以使用检索到的数据根据​​用户的 Angular 色激活不同的路线,而不是简单地返回。

关于基于角色的Angular 4路由默认页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51831803/

相关文章:

angular - 直接链接到 Angular 4 中的子路由

javascript - 如何使 FileReader 与 Angular2 一起工作?

javascript - 如何使用 ionic Media 插件顺序播放多个音频

javascript - 检测用户关闭选项卡或离开网站

Angular2 CanActivate 导航

angular - 如何在 Angular 2 项目中分离管理员和前端网络

angular - 使用提交按钮时不要使用 CanDeactivate 守卫

ajax - 元组的 Angular HTTP 可观察对象

iOS Alamofire 不正确的授权 header

Laravel 5.6 - 在 Controller 中按名称获取路由