1

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

これは私のガードです:

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コンポーネントに注入されて正常に動作し、 my に含まれていapp.moduleます:

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

CookieService、などの他のサービスは問題Httpなく注入されますが、 にUserAccountServiceはこの問題があります。

以下は、サービスの定義です。

 @Injectable()
 export class UserAccountService {

   private currentUser: any = {};

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

2 に答える 2

1

ギュンターさん、お返事ありがとうございます。実際、問題は次の行にありました。

import { UserAccountService } from '../';

/indexファイルからではなく、実際の場所から UserAccountService を参照する必要がありました。

于 2016-11-11T08:11:09.763 に答える
0

canActivate(のような)のサービスを定義するだけCanActivateTeamです。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 {}
于 2016-11-09T16:44:08.220 に答える