2017-11-16 3 views
0

私はauth.guard.serviceを作成しようとしていますが、何らかの理由でエラーCan't resolve all parameters for AuthGuard: (?, [object Object]).が表示されます。角度認証ガードすべてのパラメータを解決できません

import { Observable } from 'rxjs/Observable'; 
// import { AuthService } from './auth.service'; 
import { Injectable } from '@angular/core'; 
import { CanActivate, Router, RouterStateSnapshot, ActivatedRouteSnapshot } from '@angular/router'; 

@Injectable() 
export class AuthGuard implements CanActivate { 
    user = true; 
    constructor(private auth: any, private router: Router) { } 

    canActivate(
    next: ActivatedRouteSnapshot, 
    state: RouterStateSnapshot): Observable<boolean> | boolean { 
    if (this.user) { 
     return true; 
    } 
    this.router.navigate(['']); 
    return false; 
    } 
} 

、ここではただ、私はまだそれを使用していないため、エラーがある可能性があり、auth.guard.servicesにインポーチンイムサービスがコメントしている知らないapp.module

import { BrowserModule } from '@angular/platform-browser'; 
import { NgModule } from '@angular/core'; 
import { RouterModule, Routes } from '@angular/router'; 

import { AppRoutingModule } from './app-routing.module'; 
import { AppComponent } from './app.component'; 
import { NavComponent } from './components/nav/nav.component'; 
import { HomeComponent } from './components/home/home.component'; 
import { GalleryComponent } from './components/gallery/gallery.component'; 
import { FooterComponent } from './components/footer/footer.component'; 

import { NgbModule } from '@ng-bootstrap/ng-bootstrap'; 
import { ScrollToModule } from 'ng2-scroll-to'; 
import { NgxCarouselModule } from 'ngx-carousel'; 
import { AnimateOnScrollModule } from 'ng2-animate-on-scroll'; 

import { AuthGuard } from './services/auth.guard.service'; 

import { HttpClientModule, HttpClient } from '@angular/common/http'; 
import { TranslateModule, TranslateLoader } from '@ngx-translate/core'; 
import { TranslateHttpLoader } from '@ngx-translate/http-loader'; 


const routes: Routes = [ 
    { path: '', component: HomeComponent }, 
    { path: 'gallery', component: GalleryComponent, canActivate: [AuthGuard] } 
]; 

export function HttpLoaderFactory(http: HttpClient) { 
    return new TranslateHttpLoader(http); 
} 

@NgModule({ 
    declarations: [ 
    AppComponent, 
    NavComponent, 
    HomeComponent, 
    GalleryComponent, 
    FooterComponent 
    ], 
    imports: [ 
    BrowserModule, 
    AppRoutingModule, 
    NgxCarouselModule, 
    NgbModule.forRoot(), 
    ScrollToModule.forRoot(), 
    RouterModule.forRoot(routes), 
    AnimateOnScrollModule.forRoot(), 
    HttpClientModule, 
    TranslateModule.forRoot({ 
     loader: { 
     provide: TranslateLoader, 
     useFactory: HttpLoaderFactory, 
     deps: [HttpClient] 
     } 
    }) 
    ], 
    exports: [ 
    TranslateModule 
    ], 
    providers: [AuthGuard], 
    bootstrap: [AppComponent] 
}) 
export class AppModule { } 

です場合は、誰かがアイデアを持っている場合、何らかの理由で私はすべてのパラメータを解決することができます。

答えて

1

エラーは、角度依存性注入に関する実行時エラーです。型がanyであるため、最初のコンストラクタパラメータによって表される依存関係を作成する方法を決定することはできません。タイプをanyから提供されているタイプに変更するか、提供されているタイプまたはトークンで@Injectを使用することができます。角度DIは、第2パラメータ(Router)に問題があってはなりません。

0

あなたのコンストラクタでは "any"を使用できます。コンストラクタ(プライベート認証:任意、プライベートルータ:ルータ)。 authServiceのようなサービスに変更してください。

関連する問題