カスタムパイプを使用する2ページがあります。 pipesという名前のsrc/appにフォルダーを作成しました。そしてファイルpipes.module.tsを作成しました
import { NgModule } from '@angular/core';
import { TranslatePipe } from './translate.pipe';
@NgModule({
declarations: [
TranslatePipe
],
imports: [],
exports: [
TranslatePipe
]
})
export class PipesModule {}
最初のコンポーネントモジュールファイルdevices.module.tsからインポートしています
import { PipesModule } from '../pipes/pipes.module';
@NgModule({
imports: [
...
PipesModule
],
declarations: [DevicesPage, ]
})
export class DevicesPageModule {}
このコンポーネントは、パイプを使用するとうまく機能します。
しかし、私は別のコンポーネントも持っています。 home.module.ts
import { PipesModule } from '../pipes/pipes.module'
@NgModule({
imports: [
PipesModule,
CommonModule,
FormsModule,
IonicModule,
RouterModule.forChild([
{
path: '',
component: HomePage
}
]),
ComponentsModule,
MatPaginatorModule,
],
declarations: [HomePage]
})
export class HomePageModule {}
ボタンでデバイスページからホームページを呼び出す。しかし、ボタンをクリックするとエラーが発生します。
pipes.module.ts;
import { NgModule } from '@angular/core';
//import custom pipes here
@NgModule({
declarations: [
TranslatePipe
],
imports: [],
exports: [
TranslatePipe
]
})
export class PipesModule {}
1)最初に、src/appフォルダー(appフォルダー内)にpipesフォルダーを作成します。
2)次に、cmdで "ionic generate pipe pipes/searchfilter" =>これにより、パイプ内に2つのファイルが生成されます。
3 3番目に、 "pipes.module.ts"という名前のファイルをpipesフォルダーに作成し、以下のコードを=> "pipes.module.ts"に書き込みます
import { NgModule } from '@angular/core';
import { CommonModule } from '@angular/common';
import { SearchfilterPipe } from './searchfilter.pipe'; //our pipe which we generate
@NgModule({
imports: [
CommonModule
],
declarations: [SearchfilterPipe],
exports: [SearchfilterPipe]
})
export class PipesModule { }
これでPipesModuleができたので、さらにパイプを生成してpipesmoduleに書き込むことができます。すべてのパイプではなく、PipesModuleのみをインポートします。
4)app.module.tsにPipesModuleをインポートする必要はありません
5)次に、パイプを使用するページに移動し、たとえば「anasayfa.module.ts」を開いて「PipesModule」をインポートし、@ ngModel importsに書き込みます(これは自動的に作成されます)PipesModuleをインポートするように注意してくださいsomething.MODULE.TSではなくsomething.page.ts
Ionic 4 Solution:
これは私がカスタムパイプを動作させる方法ですIonic 4:
ionic g pipe plural-singular
_を使用して、pipes
ディレクトリのapp
フォルダーにカスタムパイプを作成しました注:プロジェクトディレクトリのどこにでもパイプを作成できますが、pipes
整理のためのディレクトリ。
providers
およびdeclarations
の下に次のように指定しました。all.module.ts
_import {PluralSingularPipe} from '../../pipes/plural-singular.pipe';
@NgModule({
imports: [
CommonModule,
FormsModule,
IonicModule,
RouterModule.forChild(routes)
],
providers: [
PluralSingularPipe //---> Here
],
declarations: [PluralSingularPipe] //---> And here
})
_
all.page.ts
_import {PluralSingularPipe} from '../../pipes/plural-singular.pipe';
_
constructor
でパイプを宣言しました。all.page.ts
constructor(public pluralSingular: PluralSingularPipe) {}
all.page.html
_{{ numberOfRecords | pluralSingular: 'coupon' : 'coupons' }}
_
それだけです!
CURIOUSの場合:役立つ場合は、ここにpackage.jsonファイルの私のバージョンを示します。
_"@ionic/angular": "^4.7.1",
"@angular/core": "~8.1.2",
_
子コンポーネントのPipesModuleをホームページにインポートするのを忘れていることに気付きました。インポート後に問題が解決しました
使用する必要があるすべてのモジュールにパイプをインポートするだけで、多くの読み取りと実験を節約できます。たとえば、homeというページがあり、ここでパイプを使用する場合は、home.module.tsに移動してインポートしますそこで、宣言とエクスポートにパイプを追加すれば完了です!
これで、複数のパイプでモジュールを作成した場合、それをallmypipes.module.tsと呼ぶこともできます。関連するすべてのパイプをこのモジュールにインポートし、宣言とエクスポートに追加してから、このモジュールを任意のパイプを使用するすべてのページ(page.module.ts)にインポートすれば完了です。