web-dev-qa-db-ja.com

angular2 Observableプロパティ 'debouceTime'はタイプ 'Observable <any>'に存在しません

"angular2 webpack"および"angular2/form、Observable"を使用していますが、エラーが発生しました。ヘルプが必要です。

カスタムフォームバリデーターがあります-

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」に存在しません。

20
Kery Hu

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

それを確認してください こちら

44
Radim Köhler

Rxjs 6の後にここに来るすべての人に:

pipe()を使用する必要があります:

何だった

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

今である必要があります:

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

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

30
user3249027

ここにタイプミスがあります。 debouceTimeではなくdebounceTimeです:)

4
Can Nguyen

Angle-cli 1.6.8で生成されたプロジェクトでangular v5.2.6およびrxjs v5.5.6で作業しているときに、最近同様のエラーが発生しました。

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

コントロールのvalueChangesイベントをサブスクライブしていたので、

import { Observable } from 'rxjs/Rx';

これがお役に立てば幸いです!

私にとって、答えはパイプを使用することでした:

.pipe(debounceTime(500))

さらに、インポートの変更元:

import "rxjs/add/operator/debounceTime"; 

に:

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

そして、はい、私はチュートリアルに従っていたので、うまくいけばこれが役立つ

3
DHLopez

複数のRxJS演算子でdebounceTime()を使用する必要があるとしましょう。。pipe()演算子を使用することをお勧めします

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

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

私は最近同じ問題を抱えていて、私がやった後に解決しました:

import { debounceTime } from 'rxjs/operators';

また、必要に応じてパイプを追加しましたAngular 5+

something.pipe(debounceTime(100)).subscribe(something...);
0
Aman

2019年8月

例:

輸入:

import { Subject } from "rxjs";
import { debounceTime } from "rxjs/operators";

コンポーネントクラス:

resizeEvent: Subject<any> = new Subject<any>();

@HostListener("window:resize", ["$event"])
onResize(event: any) {
  this.resizeEvent.next(event);
}

ngOnInit() {
  console.log("in ngOnInit");

  this.resizeEvent
    .pipe(debounceTime(500))
    .subscribe(this.actualResizeHandler);
}

actualResizeHandler(event: any) {
  //   event.target.innerWidth;
  console.log("in actualResizeHandler");
}