2017-12-06 10 views
-1

では、次のように私はAuthGuard.service.tsのコードを持っています。 userLoginService.tsではAuthGuardのすべてのパラメータを解決できません:私のAuthGuardサービス

import { Injectable } from '@angular/core'; 
import { ActivatedRoute, CanActivate } from '@angular/router'; 
import { userLoginService } from './userLoginService'; 
export class AuthGuard implements CanActivate { 
    constructor(private service: userLoginService) { } 
    canActivate() { 
     if (this.service.IsloggedIn()) { 
      return true; 
     } else { 
      window.alert(' You are not logged in.Please LogIn '); 
      return false; 
     } 
    } 

} 

export class userLoginService { 
    constructor() {} 
    IsloggedIn(): boolean { 
     return false; 
    } 
} 

次のように私は私のルートでこのAuthGuard.service.tsを注入していますが、以下のように、私は、コードを持っています。また、NgModuleのプロバイダにこのサービス名を提供しました。

const appRoutes: Routes = [ 
     { path: '', component: HomePageComponent, pathMatch: 'full' }, 
     { path: 'CartItems', component: CartItemsComponent, pathMatch: 'full', canActivate: [ AuthGuard ]}, 
    ]; 
@NgModule({ 
. 
. 
. 
providers: [UserInfoService , AuthGuard], 
. 
. 
. 

このコードを実行すると、次のようなエラーが表示されます。

Uncaught Error: Can't resolve all parameters for AuthGuard: (?). 
    at syntaxError (compiler.js:466) 
    at CompileMetadataResolver._getDependenciesMetadata (compiler.js:15547) 
    at CompileMetadataResolver._getTypeMetadata (compiler.js:15382) 
    at CompileMetadataResolver._getInjectableMetadata (compiler.js:15362) 
    at CompileMetadataResolver.getProviderMetadata (compiler.js:15722) 
    at eval (compiler.js:15633) 
    at Array.forEach (<anonymous>) 
    at CompileMetadataResolver._getProvidersMetadata (compiler.js:15593) 
    at CompileMetadataResolver.getNgModuleMetadata (compiler.js:15161) 
    at JitCompiler._loadModules (compiler.js:33542) 

私は間違いをどこにしたか教えてください。

+0

「UserLoginService」はどこにありますか?それは '@注射可能なものでさえ? – jonrsharpe

+0

はい私はそれを注射可能にした。 – roopteja

+0

ルートのファイル全体を(インポート時)@roopteja –

答えて

1

注射剤を輸入していますが、決して使用しません。

あなたのAuthGuard.service.tsに。次のようにクラスの上に@Injectable()を追加する必要があります。

@Injectable() 
export class AuthGuard implements CanActivate { 
    ... 
} 
関連する問題