web-dev-qa-db-ja.com

クラスをモジュールにエクスポートし、TypeScriptの別のモジュールにangular

モジュールAにエクスポートされるクラス(IGeneric)があり、そのモジュール(A)をモジュールBにインポートしましたが、そのエクスポートされたクラス(IGeneric)をモジュールで使用できませんでしたB。

注:エクスポートされたクラスはコンポーネント、ディレクティブ、サービスではありません。プレーンなTypeScriptクラスです。

よろしくお願いします。エクスポートしようとしているクラス

export class IGeneric{
header : any[];
content : [{
   lable :any,
   value :any
}]
}
4
praveen

これは、(完全に異なる別個の)NgModuleシステムの問題ではなく、ES6/TypeScriptモジュールのインポート/エクスポートの問題のように見えます。この場合は、.tsファイルの先頭にある必要なファイルから必要なクラスをimportする必要があります。例:

import { IGeneric } from './relative/path/to/definition';

次に、コンポーネント/サービスなどで通常使用するようにクラスを使用します

public generic: IGeneric;
1
danimal

hideモジュール内の詳細を barrel files にするトリックがあります。

  • バレルファイル(通常はindex.tsという名前)をそのモジュールに導入するだけで、
  • エクスポートする予定のすべてをそのバレルファイルにエクスポートしてから、
  • エクスポートされたクラス/インターフェースまたはコンポーネントを使用しようとするたびに、モジュールパスをインポートします。

フォローアップとして、バレルファイルを使用して達成できることを詳しく説明する別の answer があります。

1
Hearen

indexファイルは、クラスのパス全体を表示したくない場合に役立ちます

MyModuleクラスを持つモジュールIGenericがあると仮定します

igeneric.model.ts

export class IGeneric{
header : any[];
content : [{
   lable :any,
   value :any
}]

インデックスファイルは、Module MyModuleディレクトリ内にある必要があります

index.ts

export * from 'app/MyModule/igeneric.model';

次に、コンポーネントでインポートできます

import {IGeneric} from 'app/MyModule'
1
Amit Chigadani