错误:属性计时器不存在于类型typeof Observable上

时间:2017-12-26 10:42:40

标签: angular timer rxjs observable

代码在

之下
import {Component} from 'angular2/core';
import {Observable} from 'rxjs/Rx';

@Component({
selector: 'my-app',
template: 'Ticks (every second) : {{ticks}}'
})
export class AppComponent {
   ticks =0;

   click(){
      let timer = Observable.timer(2000,1000);
      timer.subscribe(t=>this.ticks = t);
   }
}

但是我收到了一个错误。错误位于以下行:

let timer = Observable.timer(2000,1000);

错误的定义是"属性定时器不存在于类型typeof Observable" 为什么我会得到这样的错误? 你觉得怎么样?

4 个答案:

答案 0 :(得分:20)

那是因为你没有将Observable方法修补到import { timer } from 'rxjs'; let timer$ = timer(2000,1000); 原型中。

更新:Rxjs 6.0.0

将创建方法导入为静态纯函数:

import 'rxjs/add/observable/timer';

原始回答:

您有两个选择:

1)用以下方法修补方法:

import { timer } from 'rxjs/observable/timer';
let timer$ = timer(2000,1000);

2)将运算符作为静态纯函数导入:

var client = new Client({'accessToken': accessToken, 'refreshToken':refreshToken});

我个人会推荐第二种方法。

答案 1 :(得分:3)

现在需要直接从 rxjs 库中导入timer函数, 下面的工作正常。10秒后,将在控制台中看到“解雇”消息。

import { timer } from 'rxjs';

const numbers = timer(10000);
numbers.subscribe(any => console.log('fired'));

请查看此链接以获取更多详细信息:https://rxjs-dev.firebaseapp.com/api/index/function/timer

答案 2 :(得分:1)

您需要做的就是从库的根文件夹导入 Observable,因为旧版本的rxjs不能在rxjs / Observable中提供完整的Observable类

import {Observable} from 'rxjs';

答案 3 :(得分:-1)

如果你只需要一个计时器,你也可以使用它:

setInterval(() => {
      this.callNecessaryMethod();
    }, this.intervalInMilliSeconds);

这是函数原型:

function setInterval(callback: (...args: any[]) => void, ms: number, ...args: any[]): NodeJS.Timer (+2 overloads)