Error: Property timer doesn't exist on type ty

2019-03-29 05:30发布

The code is below

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);
   }
}

But i am getting an error. The error is in the following line:

let timer = Observable.timer(2000,1000);

The definition of error is "property timer doesn't exist on type typeof Observable" Why am I getting error like that? What do you think?

3条回答
萌系小妹纸
2楼-- · 2019-03-29 05:58

all you need to do is to import Observable from the root folder of library because older versions of rxjs does not provide complete Observable class in rxjs/Observable

import {Observable} from 'rxjs';
查看更多
欢心
3楼-- · 2019-03-29 06:04

If all you need is a timer, you could use this too:

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

This is the function prototype:

function setInterval(callback: (...args: any[]) => void, ms: number, ...args: any[]): NodeJS.Timer (+2 overloads)
查看更多
Rolldiameter
4楼-- · 2019-03-29 06:08

Thats because you havent patched the timer method into the Observable prototype.

Update: Rxjs 6.0.0

Import the creation method as a static pure function:

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

Original answer:

You have 2 options:

1) Patch the method with:

import 'rxjs/add/observable/timer';

2) Import the operator as a static pure function:

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

Personally I would recommend the 2nd approach.

查看更多
登录 后发表回答