angular2 Наблюдаемое свойство 'debouceTime' не существует для типа 'Observable <any>'

я использую"angular2 webpack" а также"Angular2 / форма, Наблюдаемое" , но встретил ошибку, нужна помощь ..

Существует специальный валидатор форм -

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

Я мог бы найти файл"/projection_direction/node_modules/rxjs/operator/debounceTime.js"

почему такая ошибка--

Свойство debouceTime не существует для типа «Observable».

Ответы на вопрос(6)

import { debounceTime } from 'rxjs/operators';

А также добавил трубу, как это требуется я думаю для Angular 5+

something.pipe(debounceTime(100)).subscribe(something...);
Решение Вопроса

Убедитесь, что вы инициировали это в main.ts(где приложение загружается)

import "rxjs/add/operator/map";
import "rxjs/add/operator/debounceTime";
...

или все сразу

import "rxjs/Rx";

ПРОДЛИТЕ

естьрабочий пример

//our root app component
import {Component, EventEmitter, ChangeDetectorRef} from '@angular/core'
import {Observable} from  "rxjs/Rx";
@Component({
  selector: 'my-app',
  providers: [],
  template: `
    <div>
      <h2>Hello {{name}}</h2>

        <div>debounced message: {{message}}</div>
    </div>
  `, 
  directives: []
})
export class App {

  protected message: string;
  protected emitter = new EventEmitter<string>();
  public obs: Observable<string>;

  constructor() {
    this.name = 'Angular2 (Release Candidate!)'

    this.obs = this.emitter
      .map(x => x)
      .debounceTime(1200)
      ;

    this.obs.subscribe(msg => this.message = msg);
  }

  ngOnInit(){
    this.emitter.emit("hello after debounce");
  }
}

и это работает, когда в main.ts у нас есть:

//main entry point
import {bootstrap} from '@angular/platform-browser-dynamic';
import {App} from './app';

import "rxjs/Rx"; 

bootstrap(App, [])
  .catch(err => console.error(err));

Проверь этоВот

 Radim Köhler24 июн. 2016 г., 08:07
Я создал плункер для вас, расширил ответ .. надеюсь, это должно помочь
 Ben Racicot06 авг. 2017 г., 20:00
@ RadimKöhler Я думаю, что Плункер ошибается. Лично я вижу ошибки TSArgument of type '(term: any) => void' is not assignable to parameter of type '(value: any, index: number) => ObservableInput<{}>'. Type 'void' is not assignable to type 'ObservableInput<{}>'.
 Kery Hu24 июн. 2016 г., 07:52
я добавитьimport "rxjs/add/operator/map"; import "rxjs/add/operator/debounceTime" now ;  в main.ts ,, но ошибка все еще ...

Теперь вам нужно использоватьpipe():

Что было

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

Теперь нужно быть:

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

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

 mghaoui27 июл. 2018 г., 14:39
Это правильный ответ.

Для меня ответом было использование трубы:

.pipe(debounceTime(500))

Плюс изменение импорта из:

import "rxjs/add/operator/debounceTime"; 

Для того, чтобы:

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

И да, я следовал учебнику, так что, надеюсь, это поможет

v5.5.6 в проекте angular-cli 1.6.8. У меня изначально было:

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

так как я подписывался на событие valueChanges элемента управления, и я продолжал получать сообщение об ошибке, пока я не поставил

import { Observable } from 'rxjs/Rx';

Надеюсь, это поможет!

вы должны использоватьdebounceTime () с несколькими операторами RxJS, я бы предложил использовать.pipe () оператор

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

 functionName(value: Observable<string>) {
    return .pipe(
      debounceTime(400),
      distinctUntilChanged(),
      switchMap(location => this.secondFunc(value))
    )
  }

Ваш ответ на вопрос