Не может соответствовать ни одному маршруту.Сегмент URL: «главная система / система обновления» - PullRequest
0 голосов
/ 04 июня 2018

Я не могу понять, где и что мне не хватает.Я пытаюсь создать авторизацию для дочерних маршрутов.И если пользователь -> Admin, только он может просматривать URL-адреса, а если пользователь ---> notAdmin, то только он не может просматривать определенные URL-адреса. Я сделал одну авторизацию, что в login.component.ts, япроверьте, является ли пользователь администратором или нет, и сохраните его в localStorage для дальнейшего доступа, но он не работает, когда я отдельно ввожу URL-адрес и получаю доступ к странице.

Например.Я не могу разрешить доступ к этому конкретному URL для -> notAdmin

http://localhost:4200/#/master-system/add-group

Ошибка, которую я получаю, -

 Error: Cannot match any routes. URL Segment: 'master-system/update-system'

PS:Должен ли компонент update-user обязательно находиться внутри компонента master-user?код

routing-module.ts

  const routes: Routes = [
    {
    path: '',
    data: {
        title: 'Master System'
       },
    children: [
        {
            path: 'master-systems',
            component: MasterSystemsComponent,
            canActivateChild:[AuthGuard],
            data: {
                title: 'Master Systems'
            },
            children:[
                {
                    path: 'add-system',
                    component: AddSystemComponent,

                    data: {
                        title: 'Add'
                    }
                },
                {
                    path: 'update-system',
                    component: UpdateSystemComponent,

                    data: {
                        title: 'Update'
                    }
                }
            ]
        },
        {
            path: 'master-interface',
            component: MasterInterfaceComponent,
            canActivateChild:[AuthGuard],
            data: {
                title: 'Master Interface'
            },
            children:[{
                path: 'add-interface',
                component: AddInterfaceComponent,

                data: {
                    title: 'Add'
                }
            },
            {
                path: 'update-interface',
                component: UpdateInterfaceComponent,

                data: {
                    title: 'Update'
                }
            }]
        },
        {
            path: 'master-user',
            component: MasterUserComponent,
            canActivateChild:[AuthGuard],
            data: {
                title: 'Master User'
            },
            children:[
                {
                    path: 'add-user',
                    component: AddUserComponent,

                    data: {
                        title: 'Add'
                    }
                },
                {
                    path: 'update-user',
                    component: UpdateUserComponent,


                    data: {
                        title: 'Update',
                        expectedRole: '18'
                    },

                },
            ]
        },
        {
            path: 'master-group',
            component: GroupComponent,
            canActivateChild:[AuthGuard],
            data: {
                title: 'Master Group'
            },
            children:[
                {
                    path: 'add-group',
                    component: AddGroupComponent,

                    data: {
                        title: 'Add',
                        expectedRole: '18'
                    }
                },
                {
                    path: 'update-group',
                    component: UpdateGroupComponent,
                    data: {
                        title: 'Update'
                    }
                },
            ]
        },
        {
            path: 'master-role',
            component: RoleComponent,
            canActivateChild:[AuthGuard],
            data: {
                title: 'Master Role'
            },
            children:[ {
                path: 'add-role',
                component: AddRoleComponent,
                data: {
                    title: 'Add'
                }
            },
            {
                path: 'update-role',
                component: UpdateRoleComponent,
                data: {
                    title: 'Update'
                }
            },
        ]
         },  ]

        }
       ];

  @NgModule({
   imports: [RouterModule.forChild(routes)],
    exports: [RouterModule]
    })
    export class MasterSystemRoutingModule { }

authGuard.ts

 import { Injectable } from '@angular/core';
 import { Router, CanActivate, ActivatedRouteSnapshot,     RouterStateSnapshot,       
  CanActivateChild } from '@angular/router';


   @Injectable()

    export class AuthGuard implements CanActivateChild, CanActivate {
      expectedRole: any;
      accessId:boolean=false;
       constructor(private router: Router) { }

   canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot)          
     {
    if (localStorage.getItem('CurrentUser')){

        console.log("IN AUTHGUARD", localStorage.getItem('CurrentUser'));
        console.log("inside CanActivate - true  ")
        return true;

    }
    else {

        this.router.navigate(['/pages/login'], { queryParams: { returnUrl:
     state.url } });
        console.log("inside CanActivate - false -  
     this.router.navigate(['/pages/login'] ")
        return false;
        }
     }

   canActivateChild(route: ActivatedRouteSnapshot, state:     
   RouterStateSnapshot) {
    this.expectedRole = route.data;
    console.log("AAAAAA ", this.expectedRole);


        if ( localStorage.getItem('Access') == "18") {

              this.accessId = true;
              localStorage.setItem('accessId',    
      JSON.stringify(this.accessId));
              var output = localStorage.getItem('accessId');
              console.log("localStorage.getItem('accessId') = ",output)

             return true;
        }

        else 

        {
            this.router.navigate(['/pages/login'], { queryParams: {      
     returnUrl: state.url } });


            return false;         
           }

}

}

1 Ответ

0 голосов
/ 04 июня 2018

путь: ' master-системы ',! = ' master-system / update-system'

Может быть, это просто опечатка?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...