2016-04-28 12 views
0

Ich arbeite an einer Ionic2 App. Jetzt versuche ich eine benutzerdefinierte Pipe zu implementieren; aber ich folgende Fehlermeldung erhalten, wenn dabei so:Ionic2/Angular2 - Uncaught TypeError: (0, _ionicAngular.Pipe) ist keine Funktion

Uncaught TypeError: (0 , _ionicAngular.Pipe) is not a function

Bisher ist hier mein Code:

import {Page, Pipe, NavController, NavParams} from 'ionic-angular'; 


    //Phone formatting pipe 
    @Pipe({ 
     name: 'phone' 
    }) 
    export class PhonePipe{ 
     transform(val, args) { 
      val = val.charAt(0) != 0 ? '0' + val : '' + val; 
      let newStr = ''; 

      for(i=0; i < (Math.floor(val.length/2) - 1); i++){ 
       newStr = newStr+ val.substr(i*2, 2) + '-'; 
       console.log(val); 
      } 
      return newStr+ val.substr(i*2); 
     } 
    } 
    ///// 


    @Page({ 
     templateUrl: 'build/pages/outlet/outlet.html', 
     pipes: [PhonePipe] 
    }) 

    export class place { 
     static get parameters() { 
     return [[NavController],[NavParams]]; 
     } 
     constructor(nav, navParams) { 

     } 
    } 

outlet.html

<ion-content id="contentPadding" padding class="outlet"> 
    <div class="box"> 
     <div class="bigTitle">{{outletPhoneValue | phone}}</div> 
    </div> 
</ion-content> 

Beim Versuch Rohr in dem zur Umsetzung folgender weg:

import {Pipe} from 'angular2/core'; 

Der erste Fehler verschwindet; jedoch erscheint ein zweiter Fehler:

EXCEPTION: TypeError: val.charAt is not a function in [{{outletPhoneValue | phone}} in [email protected]:25]

Irgendeine Idee auf, was den Fehler verursacht?

+0

Wie verwenden Sie das Rohr? –

+0

Ich habe den Beitrag bearbeitet, bitte überprüfen, wie ich ihn verwende –

Antwort

1

Die Pipe Klasse muss von angular2/core und nicht ionic-angular importiert werden:

import {Pipe} from 'angular2/core'; 
+0

Ich habe das schon einmal gemacht, aber es gab mir den folgenden Fehler: AUSNAHME: TypeError: val.charAt ist keine Funktion in [{{outletPhoneValue | Telefon}} an Stelle @ 28: 25] –

+0

Ich denke, dass 'outPhoneValue' wird asynchron empfangen, so dass Sie überprüfen müssen, ob' val' ist null/undefiniert. Wenn das der Fall ist, gib 'val' direkt zurück. Ansonsten mach deine Verarbeitung ... –

+0

Es ist wahr, dass es async empfangen wird, aber die Variable wird noch vor der Bedingung geladen. Um sicherzustellen, dass ich eine explizite Variable eingerichtet habe: var val = 25565775; und habe den gleichen Fehler bekommen. Ich habe auch eine if-Bedingung hinzugefügt, um das null/undefined zu überprüfen, und trotzdem endete ich mit dem gleichen Fehler! –