2016-11-09 7 views
0

私のルートの認証ガードサービスを作成しようとしています。このサービスでは、現在ログインしているユーザーを返すために使用しているUserAccountServiceを注入する必要があります。CanActivateでAngular2でサービスを注入する

これは私のガードです:

import { Injectable, Inject } from '@angular/core'; 
import { CanActivate } from '@angular/router'; 
import { UserAccountService } from '../'; 


@Injectable() export class ClaimsGuardService implements CanActivate 
{ 
    constructor(private user: UserAccountService) { } 

    canActivate(route, state) { 
     return true; 
    } 
} 

UserAccountServiceは細かい部品に注入し、それは私のapp.moduleに含まれて動作します。このようCookieServiceなど

providers: [ 
    provideInterceptorService([ 
    new ServerURLInterceptor(new CookieService()) 
    ]), 
    ClaimsGuardService, 
    CookieService, 
    UserAccountService, 
], 

その他のサービス、Httpなどは、注入され、問題はありませんが、UserAccountServiceにこの問題があります。以下は

サービスの定義です:

@Injectable() 
export class UserAccountService { 

    private currentUser: any = {}; 

    constructor(private cookieService: CookieService, private http: InterceptorService) { 
    } 
} 

答えて

0

ジャスト(CanActivateTeamのような)canActivateのためのサービスを定義します。 CanActivateTeamにコンストラクタパラメータがある場合、それらはDIから渡されます。お返事ギュンターため

https://angular.io/docs/ts/latest/api/router/index/CanActivate-interface.html

@NgModule({ 
    imports: [ 
    RouterModule.forRoot([ 
     { 
     path: 'team/:id', 
     component: TeamCmp, 
     canActivate: [CanActivateTeam] 
     } 
    ]) 
    ], 
    providers: [CanActivateTeam, UserToken, Permissions] 
}) 
class AppModule {} 
1

感謝。実はこの問題は、このラインにあった:

import { UserAccountService } from '../'; 

私はその実際の場所からではなく、/indexファイルからUserAccountServiceを参照しなければなりませんでした。

関連する問題