簡體   English   中英

錯誤:在 typeof Observable 上不存在屬性計時器

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM