如何根据已验证或未验证将用户重定向到不同的URL

时间:2019-04-01 11:07:53

标签: angular url parameters

我想在验证用户身份后在URL链接中显示用户名,否则我只想显示用户ID

我在路由模块中有此路由 {
path: 'user-survey/:user_id/:user_name', canActivate : [AuthWebGuard], component: SurveyComponent },
{ path: 'favorite-world-survey', canActivate : [AuthWebGuard], component: SurveyComponent },

这是我的HTML页面,我希望在此页面上创建条件以重定向用户

<span *ngIf="!isUserSurveyList; else other_content"> <a *ngIf="!(this.commonService.authUser()==survey.user_id.email)" routerLink="/user-survey/{{survey.user_id._id}}/{{survey.user_id.name}}" class="a_link"> <p> {{ survey.user_id.name }} <i class="fa fa-check" aria-hidden="true" style="color: green; font-size: 30px;" *ngIf="survey.user_id.verifystatus"></i> </p> </a> <a *ngIf="(this.commonService.authUser()==survey.user_id.email)" routerLink="/profile" class="a_link"> <p> {{ survey.user_id.name }} <i class="fa fa-check" aria-hidden="true" style=" color: green; font-size: 30px;" *ngIf="survey.user_id.verifystatus"></i> </p> </a> </span>

http://Address:4200/#/user-survey/5a7d5f351d3a5d4eb21feb02?type=1

有可能吗?

我们将非常感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

将路由配置设置为

{  
    path: 'user-survey/:user_id/:user_name',
    canActivate : [AuthWebGuard],
    component: SurveyComponent
}

在routerLink中发送用户名和用户ID

[routerLink]="['/user-survey', survey.user_id.id, theUserName]"

在组件中提取用户名,就像提取user_id

例如:

ngOnInit(){
    this.route.params.subscribe( params =>
        console.log(params['user_name']);
    )
}

修改

如果您的路由可以且不能包含用户名,则设置两个路由配置,一个配置有username参数,一个配置不带用户名。

[
    {  
        path: 'user-survey/:user_id/:user_name',
        canActivate : [AuthWebGuard],
        component: SurveyComponent
    }

    {  
        path: 'user-survey/:user_id',
        canActivate : [AuthWebGuard],
        component: SurveyComponent
    }
}