[解決済み] 異なるモジュールで使用するためにパイプをグローバルに宣言するには?
2023-02-20 06:20:29
質問
カスタムパイプ
CurrConvertPipe
import {Pipe, PipeTransform} from '@angular/core';
import {LocalStorageService} from './local-storage';
@Pipe({name: 'currConvert', pure: false})
export class CurrConvertPipe implements PipeTransform {
constructor(private currencyStorage: LocalStorageService) {}
transform(value: number): number {
let inputRate = this.currencyStorage.getCurrencyRate('EUR');
let outputputRate = this.currencyStorage.getCurrencyRate(localStorage.getItem('currency'));
return value / inputRate * outputputRate;
}
}
これを2つのモジュールで使う必要があります。
Module1
と
Module2
.
でインポートすると
Module1
と
Module2
を使用すると、より上位のモジュールで宣言する必要があるというエラーが発生します。
そこで、私はパイプを
app.module.ts
import './rxjs-extensions';
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { FormsModule } from '@angular/forms';
import { AppRoutingModule } from './app-routing.module';
import { AppComponent } from './app.component';
import { CurrConvertPipe } from './services/currency/currency-pipe';
@NgModule({
imports: [
BrowserModule,
FormsModule,
HttpModule,
AppRoutingModule,
Module1,
Module2
],
declarations: [
AppComponent,
CurrConvertPipe
],
providers: [
],
bootstrap: [AppComponent]
})
export class AppModule { }
しかし、これを
Module1
で使用すると、エラーがスローされます。
パイプ 'currConvert' が見つかりませんでした。
どのように解決するのですか?
Angularでは、共通のディレクティブ、コンポーネント、パイプなどを共有するための良いテクニックとして、いわゆる 共有モジュール .
これらのモジュールは、他のどのモジュールでも使用できるように、共通の部品を宣言し、エクスポートします。
このような ファンダメンタルズセクション は、共有モジュールに関する非常に良い読み物です。
例として、あなたの
currConvert
というパイプがあるとします。
-
という新しいNgModuleを宣言します。
ApplicationPipesModule
-
パイプを
declarations
とexports
の配列はNgModule
-デコレータのメタデータ -
パイプを動作させるために必要なモジュールを
imports
の配列に追加します。// application-pipes.module.ts // other imports import { CurrConvertPipe } from './{your-path}'; @NgModule({ imports: [ // dep modules ], declarations: [ CurrConvertPipe ], exports: [ CurrConvertPipe ] }) export class ApplicationPipesModule {}
-
作成した
ApplicationPipesModule
モジュールを、あなたのパイプが使用されるモジュールにインポートします。imports
の配列に追加します。// my-module1.module.ts // other imports import { ApplicationPipesModule } from './{your-path}'; @NgModule({ imports: [ // other dep modules ApplicationPipesModule ], declarations: [], exports: [] }) export class MyModule1 {}
関連
-
[解決済み] 標準出力ではなく標準エラー出力にパイプを通すにはどうしたらいいですか?
-
[解決済み] ng buildの後にangular-cliのdist-folderのパスを変更するには?
-
[解決済み] 文字列|ヌル'型の引数は、文字列'型のパラメータに代入できません。タイプ 'null' はタイプ 'string' に割り当てられません。
-
[解決済み] Error: モジュールによってインポートされた予期しない値 'undefined'。
-
[解決済み] Angular2 formGroupに値を設定する
-
[解決済み] Angular 2で送信後にフォームをクリアするには?
-
[解決済み] Typescript におけるインターフェースとクラスの違い
-
[解決済み] Typescriptで文字列をbooleanに変換する方法 Angular 4
-
[解決済み] 新しいAngularでngSrcに相当するものは何ですか?
-
[解決済み] angular 4 ユニットテストエラー `TypeError: ctor is not a constructor`.
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] コンポーネントクラスからテンプレート参照変数にアクセスする
-
[解決済み] ng serve がファイルの変更を自動的に検出しない
-
[解決済み] trackBy` と `ngFor` の使い方
-
[解決済み] 子ルートから親ルートに移動するにはどうしたらいいですか?
-
[解決済み] ExpressionChangedAfterItHasBeenCheckedError: チェックされた後に、式が変更されました。以前の値: 'undefined'
-
[解決済み] Angular : ルートへの手動リダイレクト
-
[解決済み] エラー TS1192: モジュール '" A.module"' はデフォルトのエクスポートがありません。
-
[解決済み] Angularのビルドと実行方法
-
[解決済み] Angular2 *ngIf テンプレート内のオブジェクト配列の長さをチェックする
-
[解決済み] Angular 2 コンポーネントコンストラクタとOnInitの比較 [重複]。