Ionic RC - Great Angular 2 трубы "timeAgo"
Здесь есть отличная трубка.
Я пытаюсь заставить его работать с версией Ionic 2 RC и получаю эти три ошибки:
- Тип 'any' не является типом функции конструктора
- Не удается найти имя "ChangeDetectorRef". Параметр 'ref' конструктора из экспортируемого класса имеет или использует закрытое имя 'ChangeDetectorRef'.
Свойство '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 момента, зачем вам нужно создавать то, что уже существует?