Object(...)(...)。takeUntil不是函数

时间:2019-04-03 20:33:19

标签: angular rxjs angular6 rxjs6

我有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();
}

2 个答案:

答案 0 :(得分:1)

从RXJS 6开始,您必须通过管道传递运算符并从rxjs/operators导入它们。 另外,您必须使用interval而不是Observable.intervalsee 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);
}