2017-04-08 3 views
11

Ich habe gerade ein Upgrade auf Ionic 3.0.1 so kann ich LazyLoading verwenden, und dass ich da nicht meine Gewohnheit Pipes verwenden:Ionic-3 kann nicht Rohr finden

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; 
    } 
} 

und in app.module.ts habe ich hinzugefügt, um es zu die Erklärungen:

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

jetzt, wenn ich versuche, es in den html Vorlage es Fehler zu verwenden:

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 

Gibt es irgendetwas, was mir hier fehlt?

+0

Ich habe einen ähnlichen Fehler, da Migration: Kann nicht Namen ‚PipeTransform‘ – jug

Antwort

18

so fixierte ich dieses Problem durch ein PipesModule machen, wo ich meine benutzerdefinierten importieren Pipes in, importieren sie dann in der Seite module.ts, dass ich es will

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

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

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

und dann auf der Seite | HomePage als Beispiel:

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

und es hat gut funktionieren, nicht sicher, ob dies der richtige Weg ist oder nicht, aber es funktionierte gut, lass es mich wissen, ob es ein besserer Weg ... Dank!

+2

Dies funktioniert, aber es erfordert das Hinzufügen des 'PipesModule' jedem' Page.module.ts' –

+0

@AmrElAdawy es scheint zu sein, die Art und Weise Angular4 finden will uns folgen, noch nicht sicher! – Abanoub

9

Was Sie tun müssen, ist nur Import der PipesModule (Linie 12 in unten Snippet) in Ihrem jedem page.module.ts (dh home.moodule.ts) Datei ....

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

Das funktionierte für mich.

+1

Dies sollte die akzeptierte Antwort sein. – wmehanna

+0

Was ist, wenn Sie eine Pipe in einer Komponente im Gegensatz zu einer Seite verwenden? –