2016-09-05 19 views
3

私はAnuglar2 rc-4 Webアプリケーションを作成しています。私はルートを制限しようとしていますが、ログインガードを追加すると、プロバイダがないことがわかります。私の通常のログインサービスコードは正常に動作します。ログインガードとcanActiveルートを追加しようとしたときのコードです。このエラーを修正する方法に関するアイデアはありますか?あなたのアプリケーションのブートストラップ関数内でごLoggedInGuardサービスを注入する必要がAngular2 - LoggedInGuardのプロバイダがありません

routes.ts

import { RouterConfig } from '@angular/router'; 
import { Home } from './components/home/home'; 
import { Login } from './components/login/login'; 
import { DashBoard } from './components/dashboard/dashboard'; 
import { User } from './components/user/user'; 
import { Store } from './components/store/store'; 
import { LoggedInGuard } from './models/logged-in.guard.ts'; 

export const routes: RouterConfig = [ 
    { path: '', redirectTo: 'home', pathMatch: 'full' }, 
    { path: 'home', component: Home, canActivate: [LoggedInGuard] }, 
    { path: 'login', component: Login }, 
    { path: 'dashboard', component: DashBoard }, 
    { path: 'user', component: User }, 
    { path: 'store', component: Store }, 
    { path: '**', redirectTo: 'home' } 
]; 

boot.ts

import { bootstrap } from '@angular/platform-browser-dynamic'; 
import { FormBuilder } from '@angular/common'; 
import { provideRouter } from '@angular/router'; 
import { HTTP_PROVIDERS, JSONP_PROVIDERS } from '@angular/http'; 
import { App } from './components/app/app'; 
import { routes } from './routes'; 

bootstrap(App, [ 
    HTTP_PROVIDERS, 
    FormBuilder, 
    provideRouter(routes) 
]); 

ログインin.guard.ts

import { Injectable } from '@angular/core'; 
import { Router, CanActivate } from '@angular/router'; 
import { LoginService } from '../services/login.service'; 

@Injectable() 
export class LoggedInGuard implements CanActivate { 
    constructor(private ls: LoginService) {} 

    canActivate() { 
    return this.ls.isLoggedIn(); 
    } 
} 

答えて

4

bootstrap(App, [ 
    HTTP_PROVIDERS, 
    FormBuilder, 
    provideRouter(routes), 
    LoggedInGuard // injected LoggedInGuard service provider here 
]); 

注:アップグレードの際この答えは、あなたがすべてを包むしようとしている NgModuleを作成する必要があり、現在の角度2更新されたバージョン(rc.6)のために同じではないでしょう 単一の場所で依存関係は、その時LoggedInGuardprovidersオプション `NgModule

`

+0

AuthGuard何の 内側に行くのだろうか? – John

+0

ええ、申し訳ありませんが、私はそれが答えになったと思いました。 – John

関連する問題