2016-09-05 3 views
3

Я делаю веб-приложение Anuglar2 rc-4. Я пытаюсь ограничить маршруты, но когда я добавляю свой логин, он говорит мне, что нет провайдера. Мой обычный код службы входа работает отлично, его просто, когда я пытаюсь добавить логин login и canActive. Любые идеи о том, как исправить эту ошибку?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

Вы должны вводить свой LoggedInGuard службу внутри приложения начальной загрузки функции

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

Примечание: Этот ответ не будет одинаковым для текущей угловой 2 обновленной версии (rc.6) При обновлении необходимо создать NgModule, где вы собираетесь обернуть все зависимости в одном месте, что время LoggedInGuard будет идти внутри providers вариант из `NgModule

`

+0

что AuthGuard? – John

+0

Да, извините, я подумал, что я отметил это ответом. – John