Jon*_*ecl 4 declaration ionic4
我有 2 个页面,有 2 个模块,并尝试使用相同的管道,所以我在每个页面中声明了相同的管道。
listview.module.ts
import { DateTimePipe } from '../pipes/dateTime.pipe';
declarations: [ListviewPage, DateTimePipe,]
Run Code Online (Sandbox Code Playgroud)
profile.module.ts
import { DateTimePipe } from '../pipes/dateTime.pipe';
declarations: [ProfilePage, DateTimePipe]
Run Code Online (Sandbox Code Playgroud)
为此,我遇到了这个问题:
错误错误:未捕获(承诺):错误:类型 DateTimePipe 是 2 个模块声明的一部分:ListviewPageModule 和 ProfilePageModule!请考虑将 DateTimePipe 移至导入 ListviewPageModule 和 ProfilePageModule 的更高模块。您还可以创建一个新的 NgModule 来导出并包含 DateTimePipe,然后在 ListviewPageModule 和 ProfilePageModule 中导入该 NgModule。错误:类型 DateTimePipe 是 2 个模块声明的一部分:ListviewPageModule 和 ProfilePageModule!请考虑将 DateTimePipe 移至导入 ListviewPageModule 和 ProfilePageModule 的更高模块。您还可以创建一个新的 NgModule 来导出并包含 DateTimePipe,然后在 ListviewPageModule 和 ProfilePageModule 中导入该 NgModule。
我尝试在 app.module.ts 中声明它但不起作用。
谢谢
小智 6
您需要创建一个共享模块,将管道放在该模块中,然后根据需要将共享模块导入到其他位置。
共享模块.ts
import { NgModule } from '@angular/core';
import { DateTimePipe } from '../pipes/dateTime.pipe';
import { CommonModule } from '@angular/common';
@NgModule({
imports: [
CommonModule
],
declarations: [
DateTimePipe
],
exports: [
DateTimePipe
]
})
export class SharedModule {}
Run Code Online (Sandbox Code Playgroud)
listview.module.ts
...
imports: [SharedModule]
...
Run Code Online (Sandbox Code Playgroud)
profile.module.ts
...
imports: [SharedModule]
...
Run Code Online (Sandbox Code Playgroud)