【问题标题】:Error: Property timer doesn't exist on type typeof Observable错误:typeof Observable 类型上不存在属性计时器
【发布时间】:2017-12-26 10:42:39
【问题描述】:

代码如下

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 上不存在属性计时器” 为什么我会收到这样的错误? 你怎么看?

【问题讨论】:

  • puclic.......?

标签: angular timer rxjs observable


【解决方案1】:

那是因为你还没有将timer 方法修补到Observable 原型中。

更新:Rxjs 6.0.0

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

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

原答案:

你有两个选择:

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

import 'rxjs/add/observable/timer';

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

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

我个人推荐第二种方法。

【讨论】:

  • 在 rxjs 6.0 中计时器已移动:import { timer } from 'rxjs';
  • 不是第一个导致块范围的变量问题吗?
【解决方案2】:

现在需要直接从 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

【讨论】:

    【解决方案3】:

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

    import {Observable} from 'rxjs';
    

    【讨论】:

      【解决方案4】:

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

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

      这是函数原型:

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

      【讨论】:

      • 真的吗? Observable.timer 有什么问题?
      • @Tanmay P 我在哪里写的?我想当我点击按钮时,启动计时器?
      • 我可以用这种方式定义多个调用不同函数的定时器吗? @tanmay
      • @osmnfrkn61,是的,您可以使用这种方式定义多个调用不同函数的计时器。
      • @osmnfrkn61,它的用法是这样的:function onButtonClick() { setInterval(() => {this.callNecessaryMethod();}, this.interval); }
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-10
      • 1970-01-01
      • 2023-03-31
      • 2018-11-25
      • 2019-06-30
      相关资源
      最近更新 更多