angular2 Observable Property 'debouceTime'

2019-04-18 03:59发布

I use "angular2 webpack" and "angular2/form,Observable" , but met an error ,need help ..

There is a custom form validator --

import {Observable} from 'rxjs/Rx';
import {REACTIVE_FORM_DIRECTIVES,FormControl, FormGroup, Validators} from '@angular/forms';

emailShouldBeUnique(control:FormControl) {
    return new Observable((obs:any)=> {
      control.valueChanges
        .debouceTime(400)
        .distinctUntilChanged()
        .flatMap(term=>return !this.userQuery.emailExist(term))
        .subscribe(res=> {
            if (!res) {obs.next(null)}
            else {obs.next({'emailExist': true}); }; }
        )});}

I could find the file "/projection_direction/node_modules/rxjs/operator/debounceTime.js"

why is there such the error--

Property 'debouceTime' does not exist on type 'Observable'.

7条回答
我欲成王,谁敢阻挡
2楼-- · 2019-04-18 04:09

For me, the answer was using the pipe:

.pipe(debounceTime(500))

Plus changing the import from:

import "rxjs/add/operator/debounceTime"; 

To:

import {debounceTime} from 'rxjs/internal/operators';

And yes, I was following a tutorial, so hopefully this helps

查看更多
仙女界的扛把子
3楼-- · 2019-04-18 04:12

I had same problem recently, and solved after I did:

import { debounceTime } from 'rxjs/operators';

And also added pipe as it is required I think for Angular 5+

something.pipe(debounceTime(100)).subscribe(something...);
查看更多
Melony?
4楼-- · 2019-04-18 04:22

You have a typo here. It's debounceTime, not debouceTime :)

查看更多
混吃等死
5楼-- · 2019-04-18 04:23

I recently had a similar error while working with angular v5.2.6 and rxjs v5.5.6 on an angular-cli 1.6.8 generated project. I originally had:

import { debounceTime, map } from 'rxjs/operators;

since I was subscribing for a control valueChanges event and I kept getting the error until I put

import { Observable } from 'rxjs/Rx';

I hope this helps!

查看更多
做自己的国王
6楼-- · 2019-04-18 04:25

Let's say you have to use debounceTime() with multiple RxJS operators, I would suggest use .pipe() operator

import { debounceTime, distinctUntilChanged, switchMap } from 'rxjs/operators';

 functionName(value: Observable<string>) {
    return .pipe(
      debounceTime(400),
      distinctUntilChanged(),
      switchMap(location => this.secondFunc(value))
    )
  }
查看更多
Ridiculous、
7楼-- · 2019-04-18 04:28

For everyone coming here after rxjs 6:

You now need to use a pipe():

What was

myObservable$
    .debounceTime(500)
    .subscribe(val => {
    // debounced stuff
})

needs now to be:

myObservable$
    .pipe(debounceTime(500))
    .subscribe(val => {
    // debounced stuff
})

https://www.learnrxjs.io/operators/filtering/debouncetime.html

查看更多
登录 后发表回答