web-dev-qa-db-ja.com

AuthGuardのすべてのパラメーターを解決できない:AuthGuardサービスの場合

AuthGuard.service.tsのコードは次のとおりです。

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;
        }
    }

}

UserLoginService.tsには、次のようなコードがあります

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)

どこで間違いを犯したのか教えていただけませんか。

9
roopteja

Injectableをインポートしているようですが、使用することはありません。

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

@Injectable()
export class AuthGuard implements CanActivate {
    ...
}
25
Paris Benamour

私の場合、ガードファイルを別のディレクトリに移動しました。サーバーは私の問題を解決しました。

0
Richard

キャッチされないエラー:AuthGuardのすべてのパラメーターを解決できません:(?)。 SyntaxError(compiler.js:431)at CompileMetadataResolver._getDependenciesMetadata............。

私はこの問題に長く直面しているので、次のようにしてこのエラーを解決してください。

'app.component.ts'にこれらの2行を追加すると、問題が解決します。

    import 'core-js/es6/reflect';

    import 'core-js/es7/reflect';