簡體   English   中英

Angular2 - 沒有LoggedInGuard的提供者

[英]Angular2 - No provider for LoggedInGuard

我正在制作一個Anuglar2 rc-4網絡應用程序。 我正在嘗試限制路由,但是當我添加我的登錄守衛時,它告訴我沒有提供商。 我的正常登錄服務代碼工作正常,就在我嘗試添加登錄保護和canActive路由時。 有關如何解決此錯誤的任何想法?

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

您必須在應用程序引導功能中注入LoggedInGuard服務

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

注意:對於當前的角度2更新版本(rc.6),這個答案是不一樣的。升級時你需要創建一個NgModule ,你要在一個地方包裝所有依賴項,那時LoggedInGuard會去`NgModule的內部providers選項

`

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM