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)
どこで間違いを犯したのか教えていただけませんか。
Injectableをインポートしているようですが、使用することはありません。
AuthGuard.service.ts内。次のように、クラスの上に:@Injectable()
を追加する必要があります。
@Injectable()
export class AuthGuard implements CanActivate {
...
}
私の場合、ガードファイルを別のディレクトリに移動しました。サーバーは私の問題を解決しました。
キャッチされないエラー:AuthGuardのすべてのパラメーターを解決できません:(?)。 SyntaxError(compiler.js:431)at CompileMetadataResolver._getDependenciesMetadata............。
私はこの問題に長く直面しているので、次のようにしてこのエラーを解決してください。
'app.component.ts'にこれらの2行を追加すると、問題が解決します。
import 'core-js/es6/reflect';
import 'core-js/es7/reflect';