Ionic RC - Great Angular 2 трубы "timeAgo"

Здесь есть отличная трубка.

Я пытаюсь заставить его работать с версией Ionic 2 RC и получаю эти три ошибки:

  1. Тип 'any' не является типом функции конструктора
  2. Не удается найти имя "ChangeDetectorRef". Параметр 'ref' конструктора из экспортируемого класса имеет или использует закрытое имя 'ChangeDetectorRef'.
  3. Свойство 'interval' не существует для типа 'typeof Observable'

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

    }

Есть идеи, как это решить?

Изменить: я смог вынуть ошибку 3/ с помощью import {Observable} from 'rxjs/Rx';

2 ответа

Для rxjs 6.*

import { interval } from "rxjs";
const observable = interval(1000);

Используйте угловые 2 момента, зачем вам нужно создавать то, что уже существует?

Другие вопросы по тегам