我有interval和takeuntil的观测值,它在角度5上运行良好。现在,当我将其更新为角度6和rxjs6时,它失败了。 我从Observable.interval更改为interval,但是takeuntil无法正常工作。 我需要takeuntil,因为当组件被破坏时,我需要停止此可观察的事件。
import { Observable, Subject } from "rxjs";
private onDestroy$ = new Subject<void>();
Observable.interval(600000).takeUntil(this.onDestroy$).subscribe(x => {
// do something
});
ngOnDestroy() {
this.onDestroy$.next();
}
答案 0 :(得分:1)
从RXJS 6开始,您必须通过管道传递运算符并从rxjs/operators
导入它们。
另外,您必须使用interval
而不是Observable.interval
,see this doc for more info:
import { interval } from 'rxjs;
import { takeUntil } from 'rxjs/operators';
interval(600000).pipe(
takeUntil(this.onDestroy$)
).subscribe(x => {
// do something
});
答案 1 :(得分:0)
现在是
var formatMillisecond = d3.timeFormat(".%L"),
formatSecond = d3.timeFormat(":%S"),
formatMinute = d3.timeFormat("%I:%M"),
formatHour = d3.timeFormat("%I %p"),
formatDay = d3.timeFormat("%a %d"),
formatWeek = d3.timeFormat("%b %d"),
formatMonth = d3.timeFormat("%B"),
formatYear = d3.timeFormat("%Y");
function multiFormat(date) {
return (d3.timeSecond(date) < date
? formatMillisecond
: d3.timeMinute(date) < date
? formatSecond
: d3.timeHour(date) < date
? formatMinute
: d3.timeDay(date) < date
? formatHour
: d3.timeMonth(date) < date
? d3.timeWeek(date) < date
? formatDay
: formatWeek
: d3.timeYear(date) < date
? formatMonth
: formatYear)(date);
}