在使用Deep Linking和Lazy Loading Ionic 3时,我们如何在Pipe文件中使用Provider?

时间:2017-09-22 10:00:21

标签: angular lazy-loading ionic3 deep-linking

我想在名为Translation.ts的Pipe中使用名为TranslatePipe.ts的Provider和returnResult函数。 Translation.ts是

@Injectable()
export class TranslationProvider

  constructor() { }

  getResult(value) { returns something ; }

}

和TranslatePipe.ts以

的形式给出
@Pipe({
  name: 'translation',
})
export class TranslationPipe implements PipeTransform {

  constructor(public translateService: TranslationProvider) {

  }


  transform(value: string, ...args) {
    return this.translateService.getResult(value);
  }

我的项目是Ionic 3,我使用Lazy Loading。我的页面是ExamplePage 在ExamplePage.html中,我想将管道用作{{'something'|翻译}}

和example.ts是

@IonicPage()
@Component({
  selector: 'example',
  templateUrl: 'example.html',
})
export class ExamplePage {

  constructor(public translate: TranslationProvider) {  }
}

app.module是那样的

@NgModule({
  declarations: [
    TranslatePipe,
  ],
  imports: [
    BrowserModule,
    FormsModule,
    HttpModule,
    IonicModule.forRoot(MyApp),
    IonicStorageModule.forRoot()
  ],
  bootstrap: [IonicApp],
  entryComponents: [ .. ],
  providers: [
    {provide: ErrorHandler, useClass: IonicErrorHandler},
    TranslationProvider
  ]
})

有一些与此主题相关的内容,但它们不起作用,例如

我尝试修改example.module,我添加了Provider和Pipe,但它没有用。 你能给我一些关于解决方案的建议吗?

1 个答案:

答案 0 :(得分:1)

app.module.ts example.module.ts 中包含提供者和管道,具体取决于您是否要使用更多页面或仅在示例页面中,而不是两者。

您需要将它们添加到同一模块中。

let eventID  = Event.id
let eventName = Event.name
let aValue = Constants.someValue
let notification = NotificationKey.welcome