![](/img/trans.png)
[英]error TS2339: Property 'timer' does not exist on type 'typeof Observable'. 'switchMap' and 'takeUntil' breaks the flow
[英]Error: Property timer doesn't exist on type typeof 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 上不存在” 为什么我会收到这样的错误? 你怎么认为?
那是因为您还没有将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
您需要做的就是从库的根文件夹中导入Observable,因为旧版本的 rxjs 没有在 rxjs/Observable 中提供完整的 Observable 类
import {Observable} from 'rxjs';
如果您只需要一个计时器,您也可以使用它:
setInterval(() => {
this.callNecessaryMethod();
}, this.intervalInMilliSeconds);
这是函数原型:
function setInterval(callback: (...args: any[]) => void, ms: number, ...args: any[]): NodeJS.Timer (+2 overloads)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.