代码在
之下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" 为什么我会得到这样的错误? 你觉得怎么样?
答案 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)