1. ホーム
  2. angular

[解決済み] Angular2において、テンプレートを必要としないコンポーネントがありますが、テンプレートエラーが発生します。

2022-02-19 23:32:13

質問

このようなエラーが発生します。

コンポーネントに対してテンプレートが指定されていません PageNotFoundComponent Error: No テンプレートは、コンポーネント PageNotFoundComponent に指定されています。 at 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' はコンポーネントではないためです。

解決方法は?

更新

ルートにはコンポーネントが必要です (ここではディレクティブは使えません)。

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

オリジナル

Angular2にはテンプレートがないコンポーネントがない

変更点

 @Component({

になります。

 @Directive({

で、欲しいものが手に入るはずです。

コンポーネントは、ビューを持つディレクティブです。