代码在
下面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);
错误的定义是"属性计时器类型上不存在可观察到的类型"为什么我会遇到这样的错误?你怎么看?
那是因为您还没有将timer
方法修补到Observable
原型中。
更新:RXJS 6.0.0
将创建方法导入静态纯函数:
import { timer } from 'rxjs';
let timer$ = timer(2000,1000);
原始答案:
您有2个选项:
1)用:
修补方法import 'rxjs/add/observable/timer';
2)将操作员导入静态纯函数:
import { timer } from 'rxjs/observable/timer';
let timer$ = timer(2000,1000);
我个人建议第二种方法。
现在需要直接从 rxjs 库中导入计时器函数,下面的工作正常。10秒后将在控制台中看到"发射"的消息。
import { timer } from 'rxjs';
const numbers = timer(10000);
numbers.subscribe(any => console.log('fired'));
请参阅此链接以获取更多详细信息:https://rxjs-dev.firebaseapp.com/api/index/function/timer
您需要做的就是从库的根文件夹中观察到 import ,因为rxjs的较旧版本不提供RXJS/可观察的可观察类/可观察的类别
import {Observable} from 'rxjs';
如果您需要的只是计时器,则可以使用此功能:
setInterval(() => {
this.callNecessaryMethod();
}, this.intervalInMilliSeconds);
这是功能原型:
function setInterval(callback: (...args: any[]) => void, ms: number, ...args: any[]): NodeJS.Timer (+2 overloads)