将子路由添加到受保护路由时,“错误没有TokenGuard的提供程序”

问题描述 投票:1回答:1

我创建了一个角度2 / web api应用程序,其中我有一个Startpage,用户不必登录,不像应用程序的其他部分。这个设置适用于Startpage组件,但现在我想在我的路由模块中添加一个子路由messages,突然我在控制台中看到以下错误消息:Error: no provider for TokenGuard。这是我的路由模块的内容

const routes: Routes = [
{
    path: '',
    component: MainComponent,
    children: [
        {
            path: '',
            component: MainNavigationComponent,
            children: [
                {
                    path: 'messages',
                    component: MessagesComponent,
                    resolve: { connection: ConnectionResolver }
                },
                {
                    path: 'todos',
                    component: TodosComponent,
                    resolve: { connection: ConnectionResolver }
                },
                {
                    path: 'startpage',
                    canActivate: [TokenGuard],
                    canActivateChild: [TokenGuard],
                    component: StartpageComponent,
                    children: [
                        {
                            path: 'messages',
                            component: MessagesComponent
                        }
                    ]
                }
            ]
        }
    ]
}];

TokenGuard

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

@Injectable()
export class TokenGuard implements CanActivate, CanActivateChild {
constructor(
    private startPageService: StartpageService,
    private router: Router
) { }

canActivate(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {
    return this.startPageService.validateToken();
}

canActivateChild(route: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {
    return this.canActivate(route, state);
}
}
angular angular2-routing
1个回答
0
投票

将TokenGuard添加到app.module提供程序

@NgModule({
  .....,
  providers:[..., TokenGuard]
})
© www.soinside.com 2019 - 2024. All rights reserved.