【问题标题】:Property interval does not exist in the type observable可观察类型中不存在属性区间
【发布时间】:2020-08-30 10:33:13
【问题描述】:
ngAfterViewInit(){
     Observable.interval(3000).timeInterval().subscribe()=>{};    
}

尝试调用 Observable.interval() 方法会引发编译器错误 “可观察类型中不存在属性区间”。

编辑

import { Observable } from 'rxjs/Observable';

注意import语句已经包含了

【问题讨论】:

    标签: angular rxjs angular5


    【解决方案1】:

    对于 RxJS 6+,Tomasz Kula 给出的答案仅在使用 rxjs-compat 包时适用,该包仅应在将应用程序从 RxJS 5 转换为 RxJS 6 的过程中使用。

    在 RxJS 6+ 中,使用:

    import { interval } from 'rxjs';
    
    interval(3000).subscribe(x => /* do something */)
    

    请注意,以前存在于 Observable 类型上的任何 Observable 创建函数现在应该从 'rxjs' 导入。

    【讨论】:

      【解决方案2】:

      这对于 angular 6.1.+ 和 rxjs 6.2.+ 是正确的

      import { Observable } from 'rxjs';
      import { interval } from 'rxjs';
      
       interval(1000).subscribe(
               (value: number) => {
                 this.secondes = value;
               },
               (error: any) => {
                 console.log('error');
               },
               () => {
                 console.log('observable completed !');
               }
             );

      【讨论】:

      • 如何退订?
      • 赋值给变量然后that_variable.unsubscribe();
      【解决方案3】:

      对于 rxjs 5.5.2+ 它是:

      import { interval } from 'rxjs/observable/interval';
      

      用法:

      interval(3000).subscribe(x => // do something)
      

      【讨论】:

        【解决方案4】:
        import { Observable } from 'rxjs';
        import { interval } from 'rxjs';
        import { takeWhile } from 'rxjs/operators';
        
        // here 20 (secs) is a reference till when it will get completed
         interval(1000).pipe(takeWhile(value => value < 20)).subscribe(
                 (value: number) => {
                   this.secondes = value;
                 },
                 (error: any) => {
                   console.log('error');
                 },
                 () => {
                   console.log('observable completed !');
                 }
               );
        

        这是关于如何退订的答案。

        【讨论】:

          猜你喜欢
          • 2017-04-01
          • 1970-01-01
          • 1970-01-01
          • 2017-02-27
          • 2018-11-03
          • 2018-12-05
          • 2019-03-09
          • 2018-01-28
          • 2018-10-12
          相关资源
          最近更新 更多