首页 文章

Observable.fromEvent - RXJS

提问于
浏览
3

我正在尝试从输入事件创建一个Observable . 我已经尝试了几乎所有东西,我无法导入“fromEvent” . 这是我的代码 . 我使用角度6.0.1和RXJS 6.1.0

error TS2339: Property 'fromEvent' does not exist on type 'typeof Observable'.

import { Directive, EventEmitter, Input, Output, ElementRef, ViewChild, AfterViewInit } from '@angular/core';
import { NgControl } from '@angular/forms';
import { distinctUntilChanged } from 'rxjs/internal/operators/distinctUntilChanged';
import { debounceTime } from 'rxjs/internal/operators/debounceTime';
import { map } from 'rxjs/internal/operators/map';
import { filter } from 'rxjs/internal/operators/filter';
import { Observable } from 'rxjs/internal/Observable';
//import 'rxjs/internal/observable/fromEvent';
//import 'rxjs/add/observable/fromEvent';

@Directive({
  selector: '[ngModel][debounceTime]'
})
export class InputDebounceDirective implements AfterViewInit {

  @Output()
  public onDebounce = new EventEmitter<any>();

  @Input('debounceTime')
  public debounceTime: number = 1500;

  constructor(private elementRef: ElementRef, private currentModel: NgControl) { }

  ngAfterViewInit() {
    Observable.fromEvent(this.elementRef.nativeElement, 'keyup')
      .pipe(
        debounceTime(this.debounceTime),
        distinctUntilChanged()
      )
      .subscribe(x => {
        this.onDebounce.emit(x);
      });

  }

}

1 回答

  • 7

    您必须在RxJS6中导入 fromEvent ,如下所示:

    import {fromEvent} from 'rxjs';
    

    阅读migration guide以获取更多信息,特别是在那里查看import paths部分 .

    使用 fromEvent 时,请将其用作以下函数:

    fromEvent(this.elementRef.nativeElement, 'keyup')
    

    不是如下的静态方法(这在以前的RxJS版本中是正确的)

    Observable.fromEvent(this.elementRef.nativeElement, 'keyup')
    

相关问题