问题
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?
回答1:
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.
回答2:
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:
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)
来源:https://stackoverflow.com/questions/47977371/error-property-timer-doesnt-exist-on-type-typeof-observable