Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular2错误:意外值';AuthGuard';由模块导出';AppModule';_Angular_Angular2 Routing - Fatal编程技术网

Angular2错误:意外值';AuthGuard';由模块导出';AppModule';

Angular2错误:意外值';AuthGuard';由模块导出';AppModule';,angular,angular2-routing,Angular,Angular2 Routing,我正在努力为我面临的这个问题找到解决办法。我正在尝试在我在外部路由文件中设置的特定路由上设置防护。此防护用于检查用户是否已登录以访问此路由,或者用户是否已重定向到登录屏幕 这是我的app.module.ts文件: import { NgModule } from '@angular/core'; import { RouterModule } from '@angular/router'; import { UniversalModule } from 'angular2-universa

我正在努力为我面临的这个问题找到解决办法。我正在尝试在我在外部路由文件中设置的特定路由上设置防护。此防护用于检查用户是否已登录以访问此路由,或者用户是否已重定向到登录屏幕

这是我的app.module.ts文件:

 import { NgModule } from '@angular/core'; 
import { RouterModule } from '@angular/router'; 
import { UniversalModule } from 'angular2-universal'; 
import { AppComponent } from './app.component'; 
import { Routing } from './app.routing';


import { LoginComponent } from './shared/login/login.component'; 
import { DashboardComponent } from './dashboard/dashboard.component';


import { AuthGuard } from './shared/login/auth-guard.service'; 
import { AuthService } from './shared/login/auth.service';

    @NgModule({
        bootstrap: [ AppComponent ],
        declarations: [
            AppComponent,
            LoginComponent,
            DashboardComponent
        ],
        imports: [
            UniversalModule,
            Routing
        ],
        exports: [
            AuthGuard,
            AuthService
        ] }) export class AppModule { }
我认为导入auth-gaurd.service和auth.service并将两者导出是必要的,就像我将它们从导出中排除一样。我收到一个错误,说AuthGuard需要导出

这是我的路由文件:

import { Router, RouterModule } from '@angular/router';

import { AuthGuard } from './shared/login/auth-guard.service';

import { DashboardComponent } from './dashboard/dashboard.component';
import { LoginComponent } from './shared/login/login.component';


export const Routing = RouterModule.forRoot([ 
    { path: '', component: DashboardComponent, canActivate: [AuthGuard] }, 
    { path: 'login', component: LoginComponent},
])
最后,这是我的AuthGuard服务,它与auth服务通信,如果用户登录,auth服务的
isLoggedIn
设置为true

import { Injectable } from '@angular/core';
import { CanActivate, Router } from '@angular/router';

import { AuthService } from './auth.service';


@Injectable()
export class AuthGuard implements CanActivate {
    constructor(private _authService: AuthService, private _router: Router) {

    }

    canActivate() { // Route gaurd
        if (this._authService.isLoggedIn) { 
            return true;
        } else {
            this._router.navigate(['login']); 
            return false;
        }
    }
}
这是堆栈错误消息:

Exception: Call to Node module failed with error: Error: Unexpected value 'AuthGuard' exported by the module 'AppModule'
at G:\HaldanMT-WebApp\HaldanMT-WebApp\HaldanMT-WebApp\node_modules\@angular\compiler\bundles\compiler.umd.js:14153:33
at Array.forEach (native)
at CompileMetadataResolver.getNgModuleMetadata (G:\HaldanMT-WebApp\HaldanMT-WebApp\HaldanMT-WebApp\node_modules\@angular\compiler\bundles\compiler.umd.js:14136:46)
at RuntimeCompiler._compileComponents (G:\HaldanMT-WebApp\HaldanMT-WebApp\HaldanMT-WebApp\node_modules\@angular\compiler\bundles\compiler.umd.js:16803:49)
at RuntimeCompiler._compileModuleAndComponents (G:\HaldanMT-WebApp\HaldanMT-WebApp\HaldanMT-WebApp\node_modules\@angular\compiler\bundles\compiler.umd.js:16741:39)
at RuntimeCompiler.compileModuleAsync (G:\HaldanMT-WebApp\HaldanMT-WebApp\HaldanMT-WebApp\node_modules\@angular\compiler\bundles\compiler.umd.js:16732:23)
at NodePlatform.bootstrapModule (G:\HaldanMT-WebApp\HaldanMT-WebApp\HaldanMT-WebApp\node_modules\angular2-platform-node\node-platform.js:436:25)
at NodePlatform.serializeModule (G:\HaldanMT-WebApp\HaldanMT-WebApp\HaldanMT-WebApp\node_modules\angular2-platform-node\node-platform.js:108:22)
at G:\HaldanMT-WebApp\HaldanMT-WebApp\HaldanMT-WebApp\ClientApp\dist\main-server.js:74:63
at ZoneDelegate.invoke (G:\HaldanMT-WebApp\HaldanMT-WebApp\HaldanMT-WebApp\node_modules\zone.js\dist\zone-node.js:232:26)

任何帮助都将不胜感激。Thanx

您需要在ngModule的
providers
部分中添加
AuthGuard
AuthService
,而不是在
exports
中,或者从angular团队中查找本教程

教程中的代码示例:

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

@NgModule({
  imports: [
    RouterModule.forChild([
      {
        path: 'admin',
        component: AdminComponent,
        canActivate: [AuthGuard],
        children: [
          {
            path: '',
            children: [
              { path: 'crises', component: ManageCrisesComponent },
              { path: 'heroes', component: ManageHeroesComponent },
              { path: '', component: AdminDashboardComponent }
            ],
          }
        ]
      }
    ])
  ],
  exports: [
    RouterModule
  ]
})
export class AdminRoutingModule {}