Je viens de passer à Ionic 3.0.1
pour pouvoir utiliser LazyLoading
, et depuis, je ne peux pas utiliser mon Pipes
personnalisé:
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;
}
}
et en app.module.ts
Je l'ai ajouté aux déclarations:
@NgModule({
declarations: [
........,
StripHTML
],
...
maintenant, lorsque j'essaie de l'utiliser dans le modèle html
, il génère des erreurs:
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/Home.html@33:17
y a-t-il quelque chose qui me manque ici?
j'ai donc résolu ce problème en créant un PipesModule
où j'importe mon Pipes
personnalisé, puis l'importe dans la page module.ts
sur lequel je veux l'utiliser
import { NgModule } from '@angular/core';
import { StripHTML } from './strip-html';
@NgModule({
declarations: [
StripHTML,
],
imports: [
],
exports: [
StripHTML
]
})
export class PipesModule { }
puis dans la page | HomePage
comme exemple:
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 { }
et cela a bien fonctionné, je ne sais pas si c'est la bonne façon ou non, mais cela a bien fonctionné, faites-moi savoir s'il existe une meilleure façon ... merci!
Ce que vous devez faire est simplement importez le PipesModule (ligne 12 dans l'extrait ci-dessous) dans votre chaque fichier page.module.ts (c'est-à-dire home.moodule.ts) ....
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 { }
Cela a fonctionné pour moi.