2017-04-08 56 views
11

我刚刚升级到Ionic 3.0.1这样我就可以使用LazyLoading,既然我不能用我的自定义Pipes离子-3找不到管道

import { Pipe, PipeTransform } from '@angular/core'; 

@Pipe({ 
    name: 'StripHTML' 
}) 

export class StripHTML implements PipeTransform { 

    transform(value, args) { 
    let striped = value.replace(/(<([^>]+)>)/g, ""); 

    if (args != null) { 
     if (args.split != null) { 
     striped = striped.split(args.split); 
     if (args.index != null) { 
      striped = striped[args.index]; 
     } 
     } 
    } 

    return striped; 
    } 
} 

app.module.ts我已经把它添加到声明:

@NgModule({ 
    declarations: [ 
    ........, 
    StripHTML 
    ], 
... 
现在

当我试图在html模板是错误的使用方法:

core.es5.js:1085 ERROR Error: Uncaught (in promise): Error: Template parse errors: 
The pipe 'StripHTML' could not be found (" 
      <ion-card-content> 
      <ion-card-title style="font-size: 100%"> 
       {{ [ERROR ->]product.title | StripHTML }} 
      </ion-card-title> 
      </ion-card-content> 
"): ng:///HomeModule/[email protected]:17 

有什么我在这里失踪?

+0

我有一个类似的错误,因为迁移:找不到名称“PipeTransform” – jug

回答

18

所以我通过制作PipesModule,我输入我的自定义Pipes到修复了这个问题,然后将它导入在module.ts的页面,我想用它

import { NgModule } from '@angular/core'; 
import { StripHTML } from './strip-html'; 

@NgModule({ 
    declarations: [ 
    StripHTML, 
    ], 
    imports: [ 

    ], 
    exports: [ 
    StripHTML 
    ] 
}) 
export class PipesModule { } 

,然后在页面| HomePage为例:

import { NgModule } from '@angular/core'; 
import { IonicPageModule } from 'ionic-angular'; 
import { Home } from './home'; 

import { PipesModule } from '../../pipes/pipes.module'; 

@NgModule({ 
    declarations: [ 
    Home, 
    ], 
    imports: [ 
    IonicPageModule.forChild(Home), 
    PipesModule 
    ], 
    exports: [ 
    Home 
    ] 
}) 
export class HomeModule { } 

,它也做工精细,不知道这是正确的方式或不是,但它工作得很好,请让我知道如果有一个更好的办法...谢谢!

+2

这工作,但它需要添加'PipesModule'每'Page.module.ts' –

+0

@AmrElAdawy这似乎是一路Angular4希望我们遵循,还不确定! – Abanoub

9

你需要做的是在你的每一个page.module.ts(即home.moodule.ts)文件只是导入PipesModule(以下摘录行12)....

import { NgModule } from '@angular/core'; 
import { IonicPageModule } from 'ionic-angular'; 
import { LoginPage } from './login'; 
import { PipesModule } from '../../pipes/pipes.module'; 

@NgModule({ 
    declarations: [ 
     LoginPage, 
    ], 
    imports: [ 
     IonicPageModule.forChild(LoginPage), 
     PipesModule 
    ] 
}) 
export class LoginPageModule { } 

这对我有用。

+1

这应该是被接受的答案。 – wmehanna

+0

如果您在组件中使用管道而不是页面,会出现什么情况? –