首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Angular2 -没有LoggedInGuard的提供者

Angular2 -没有LoggedInGuard的提供者
EN

Stack Overflow用户
提问于 2016-09-05 20:46:09
回答 1查看 2.4K关注 0票数 3

我正在制作一个Anuglar2 rc-4网络应用程序。我试图限制路由,但是当我添加登录保护时,它告诉我没有提供者。我的正常登录服务代码工作正常,只是当我尝试添加登录保护和canActive路由时。对如何纠正这个错误有什么想法吗?

routes.ts

代码语言:javascript
复制
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

代码语言:javascript
复制
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)
]);

logged-in.guard.ts

代码语言:javascript
复制
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();
  }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-05 20:58:38

必须将LoggedInGuard服务注入应用程序引导函数中。

代码语言:javascript
复制
bootstrap(App, [
    HTTP_PROVIDERS,
    FormBuilder,
    provideRouter(routes),
    LoggedInGuard // injected LoggedInGuard service provider here
]);

注意:对于当前的角2更新版本(rc.6),这个答案不一样,当您升级时需要创建一个NgModule,在这里您要将所有依赖项封装在一个地方,那么LoggedInGuard将进入‘`NgModule’的providers选项中。

`

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39337504

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档