web-dev-qa-db-ja.com

Angularモジュールにモデルクラスを含めるにはどうすればよいですか?

プレーンなBean/DTOクラスになりたいクラスがいくつかあります。それらは、@ componentクラスを表示せず、@ Pipeクラスでも、@ Directiveでもありません(少なくとも、そうすべきではないと思います)。 be!)。

それらをモジュールにバンドルできるようにしたいのですが(他のモジュールで使用されます)、いくつかのインカンテーションにもかかわらず、次のようなエラーが発生し続けます。

Angular app(ng serve)を起動すると、正常にコンパイルされますが、ブラウザー(Chrome)コンソールでエラーが発生します..。

Uncaught Error: Unexpected value 'Accreditation' declared by the module 'ServiceModule'. Please add a @Pipe/@Directive/@Component annotation.

他のモジュールで使用するために、これらのクラスをモジュールにバンドルするにはどうすればよいですか?それらが私のサービスモジュールにあるのか、別の新しい「beans」モジュールにあるのかは気にしません。

このモジュール定義(service.module.ts)が与えられた場合:

import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import {MemberService} from "./member/member.service";
import { Accreditation } from "./accreditation";
import {Player} from "./player";
import {Club} from "./club";
import {Coach} from "./coach";

@NgModule({
  imports: [CommonModule],
  declarations: [Accreditation, Club, Player, Coach],
  exports: [Accreditation, Club, Player, Coach],
  providers: [MemberService]
})
export class ServiceModule { }

accreditation.ts:

export class Accreditation {
    uuid: string;
    name :string;
    lastComplete: Date;
    expires: Date;
    inLast6Months: boolean;
    type: String;
    displayName: String;
    hasCompleted: boolean;
}
7
DaFoot

App.module.tsでDTOをインポートしたり宣言したりする必要はありません。コンポーネント、ディレクティブなどに直接インポートできます。他のインポートで必要なコンポーネント/サービス/ディレクティブ、パイプにインポートするだけです。

import { Accreditation } from "./accreditation";

DTOを複数のモジュール間で共有する場合は、共有フォルダーに配置し、相対パスを使用してアクセスします。

import { Accreditation } from "./shared/accreditation";
10
Vega