在angular2中,我有一个不需要模板的组件,但我仍然遇到模板错误

Ang*_*arM 11 angular

这是我得到的错误:

没有为组件指定模板PageNotFoundComponent错误:没有为DirectiveNormalizer.normalizeDirective中的组件PageNotFoundComponent指定模板

此模块/组件将用户重定向到主页并在路由不存在时将其记录出来,例如**

这是我的组成部分:

import { Directive} from '@angular/core';
import { Router } from '@angular/router';

import { AuthService } from '../../services/authService/authService';

@Directive({
  selector: 'PageNotFoundComponent'
})

export class PageNotFoundDirective {
  constructor(_authService: AuthService, _router: Router){     
     _authService.isAuthenticated().then(() => {
        _router.navigate(['/home']);
     });
  }
}
Run Code Online (Sandbox Code Playgroud)

这是我的模块

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { RouterModule } from '@angular/router';

import { PageNotFoundDirective } from './pageNotFound.directive';
import { AuthService } from '../../services/authService/authService';

@NgModule({
  imports: [CommonModule, RouterModule],
  declarations: [PageNotFoundDirective],
  exports: [PageNotFoundDirective],
  providers: [AuthService]
})
export class PageNotFoundModule { }
Run Code Online (Sandbox Code Playgroud)

这是我的路线:

import { Route } from '@angular/router';
import { PageNotFoundDirective } from './index';

export const PageNotFoundRoutes: Route[] = [
  {
    path: '**',
    component: PageNotFoundDirective
  }
];
Run Code Online (Sandbox Code Playgroud)

这是我得到的当前错误:

(索引):95错误:(SystemJS)无法编译'PageNotFoundDirective',因为它不是一个组件.错误:无法编译'PageNotFoundDirective',因为它不是一个组件.

Gün*_*uer 25

更新

对于路线,您需要一个组件(这里不能使用指令)

@Component({
  selector: 'PageNotFoundComponent',
  template: ''
})
Run Code Online (Sandbox Code Playgroud)

原版的

Angular2中没有没有模板的组件

更改

 @Component({
Run Code Online (Sandbox Code Playgroud)

 @Directive({
Run Code Online (Sandbox Code Playgroud)

你应该得到你想要的东西.

组件是具有视图的指令.

  • 您不能在路线中使用指令.对于这种情况,您需要使用空模板创建组件.你可以使用`@Component({template:''})` (3认同)
  • 来自"@ angular/core"的`import {Directive} (2认同)