プレーンな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;
}
App.module.tsでDTOをインポートしたり宣言したりする必要はありません。コンポーネント、ディレクティブなどに直接インポートできます。他のインポートで必要なコンポーネント/サービス/ディレクティブ、パイプにインポートするだけです。
import { Accreditation } from "./accreditation";
DTOを複数のモジュール間で共有する場合は、共有フォルダーに配置し、相対パスを使用してアクセスします。
import { Accreditation } from "./shared/accreditation";