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

时间:2016-11-02 18:54:38

标签: angular

这是我得到的错误:

  

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

如果路线不存在,则该模块/组件将用户重定向到主页并将其记录出去,例如**

这是我的组成部分:

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']);
     });
  }
}

这是我的模块

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 { }

这是我的路线:

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

export const PageNotFoundRoutes: Route[] = [
  {
    path: '**',
    component: PageNotFoundDirective
  }
];

这是我得到的当前错误:

  

(index):95错误:(SystemJS)无法编译' PageNotFoundDirective'   因为它不是一个组件。错误:无法编译   ' PageNotFoundDirective'因为它不是一个组件。

2 个答案:

答案 0 :(得分:18)

<强>更新

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

@Component({
  selector: 'PageNotFoundComponent',
  template: ''
})

<强>原始

Angular2中没有没有模板的组件

更改

 @Component({

 @Directive({

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

组件是带有视图的指令。

答案 1 :(得分:1)

或者,如果您仍然希望缺少模板的组件,则可以将其从模块的声明数组中删除,并将其用作指令