【问题标题】:Declarations of 2 modules in Ionic 4Ionic 4 中 2 个模块的声明
【发布时间】:2019-07-07 16:43:05
【问题描述】:

我有 2 个页面,有 2 个模块,并尝试使用相同的管道,所以我在每个页面中声明了相同的管道。

listview.module.ts

import { DateTimePipe } from '../pipes/dateTime.pipe';

declarations: [ListviewPage, DateTimePipe,]

profile.module.ts

import { DateTimePipe } from '../pipes/dateTime.pipe';

declarations: [ProfilePage, DateTimePipe]

为此,我遇到了这个问题:

错误错误:未捕获(承诺):错误:类型 DateTimePipe 是 2 个模块声明的一部分:ListviewPageModule 和 ProfilePageModule!请考虑将 DateTimePipe 移至导入 ListviewPageModule 和 ProfilePageModule 的更高模块。您还可以创建一个新的 NgModule,它导出并包含 DateTimePipe,然后将该 NgModule 导入 ListviewPageModule 和 ProfilePageModule。 错误:类型 DateTimePipe 是 2 个模块声明的一部分:ListviewPageModule 和 ProfilePageModule!请考虑将 DateTimePipe 移至导入 ListviewPageModule 和 ProfilePageModule 的更高模块。您还可以创建一个新的 NgModule,它导出并包含 DateTimePipe,然后将该 NgModule 导入 ListviewPageModule 和 ProfilePageModule。

我尝试在 app.module.ts 中声明它但不起作用。

谢谢

【问题讨论】:

    标签: declaration ionic4


    【解决方案1】:

    您需要创建一个共享模块,将管道放在该模块中,然后根据需要将共享模块导入其他位置。

    SharedModule.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 {}
    

    listview.module.ts

    ...
    imports: [SharedModule]
    ...
    

    profile.module.ts

    ...
    imports: [SharedModule]
    ...
    

    【讨论】:

    • 我必须在 Shared.module 中导入 CommonModule 才能工作,谢谢。
    【解决方案2】:
    import { NgModule } from '@angular/core';
    import { DateTimePipe } from '../pipes/dateTime.pipe';
    import { CommonModule } from '@angular/common';  
    
    @NgModule({
        imports: [
            IonicModule,
            CommonModule
        ],
        declarations: [
            DateTimePipe
        ],
        exports: [
            DateTimePipe
        ]
    })
    export class SharedModule {}
    

    然后跟随@Shannon 回答。 IonicModule 需要 ionic4 应用程序。

    【讨论】:

    • 嗨,我在使用 SafeHtmlPipe 时遇到了同样的问题。使用上面提到的答案,我不能将它用于我的 innerHTML
    • 我已经解决了这个问题。我必须在 sharedPage 中的提供者中放置管道。
    猜你喜欢
    • 2020-03-28
    • 2017-11-21
    • 2018-04-01
    • 2018-02-19
    • 2017-02-17
    • 2019-03-28
    • 2011-02-21
    • 2020-02-03
    • 1970-01-01
    相关资源
    最近更新 更多