2016-10-24 2 views
0

hereに投稿された素晴らしいパイプがあります。イオンRC - グレートアングル2パイプ 'timeAgo'

私はそれがイオン2 RC版で動作させるためにしようとし、これらの3つのエラーを取得しています:

  1. タイプを「任意の」はコンストラクタ関数のタイプ
  2. 名「ChangeDetectorRef」を見つけることができませんではありません。エクスポートされたクラスのコンストラクタのパラメータ 'ref'には、プライベートネーム 'ChangeDetectorRef'があります。
  3. プロパティ '間隔' 'typeofを観察可能' タイプに存在しません

    import {Pipe, ChangeDetectorRef} from 'angular2/core'; 
    import {Observable} from 'rxjs/Observable'; 
    import {AsyncPipe} from 'angular2/common'; 
    
    
    @Pipe({ 
        name: 'messageTime', 
        pure: false 
    }) 
    export class MessageTimePipe extends AsyncPipe { //Type 'any' is not a constructor function type 
        value:Date; 
        timer:Observable<string>; 
    
    constructor(ref:ChangeDetectorRef) { //Cannot find name 'ChangeDetectorRef'. Parameter 'ref' of constructor from exported class has or is using private name 'ChangeDetectorRef'. 
        super(ref); 
    } 
    
    transform(obj:any, args?:any[]):any { 
        if (obj instanceof Date) { 
         this.value = obj; 
    
         if(!this.timer) { 
           this.timer = this.getObservable(); 
         } 
    
         return super.transform(this.timer, args); 
        } 
    
        return super.transform(obj, args); 
    } 
    
    private getObservable() { 
        return Observable.interval(1000).startWith(0).map(() => { //Property 'interval' does not exist on type 'typeof Observable' 
         var result:string; 
         // current time 
         let now = new Date().getTime(); 
    
         // time since message was sent in seconds 
         let delta = (now - this.value.getTime())/1000; 
    
         // format string 
         if (delta < 10) { 
          result = 'jetzt'; 
         } 
         else if (delta < 60) { 
          // sent in last minute 
          result = 'vor ' + Math.floor(delta) + ' Sekunden'; 
         } 
         else if (delta < 3600) { 
          // sent in last hour 
          result = 'vor ' + Math.floor(delta/60) + ' Minuten'; 
         } 
         else if (delta < 86400) { 
          // sent on last day 
          result = 'vor ' + Math.floor(delta/3600) + ' Stunden'; 
         } 
         else { 
          // sent more than one day ago 
          result = 'vor ' + Math.floor(delta/86400) + ' Tagen'; 
         } 
         return result; 
        }); 
    }; 
    

    }

これを解決する方法上の任意のアイデア?

編集:私はあなたがすでに存在しているものを作成する必要がない理由利用angular 2 momentimport {Observable} from 'rxjs/Rx';

+0

このエラーは解決しましたか?私もこの問題に直面していますか? –

答えて

0

を使用してエラー3 /を取ることができましたか?

+0

Ionic 2はRC版で、ロールアップを使用した新しいビルドシステムでは、プロジェクトでサードパーティのライブラリを使用するのは難しいです。 角パイプの外部依存を避けることができれば、作業がはるかに簡単になります。 – Dee