代码之家  ›  专栏  ›  技术社区  ›  HD..

角度6:类型“type of observate”上不存在属性“of”

  •  7
  • HD..  · 技术社区  · 8 年前

    我正在使用 角度6 使用 “rxjs”:“^6.0.0”,

    误差 :类型“type of observate”上不存在属性“of”。

    import { Injectable } from '@angular/core';
    import { TranslateLoader } from '@ngx-translate/core';
    import { Observable, Subject, pipe, of } from 'rxjs';
    
    
    @Injectable()
    export class MiTranslateLoaderService implements TranslateLoader {
    
      getTranslation(lang: string): Observable<any> {
        return Observable.of({
          lbl_select: 'Select',
        });
      }
    }
    
    6 回复  |  直到 8 年前
        1
  •  15
  •   martin    7 年前

    因为rxjs 6是正确的和推荐的使用方法 of() (RXJS 5在 Observable.of() 是这样的:

    import { of } from 'rxjs';
    

    我想这个 import { of } from 'rxjs/observable/of'; 只有当你有 rxjs-compat 已安装程序包。

        2
  •  4
  •   Shubham Verma    8 年前

    rxjs中有一些更新:(它的rxjs6)

    import { of } from 'rxjs';
    

    只有当你的应用程序 rxjs-compat 已安装程序包

    您可以导入 of 从 rxjs :

    import { Observable,of } from 'rxjs';

    然后就回来 of()

     return of({
          lbl_select: 'Select',
        });
    

    所以你的密码是:

    import { Injectable } from '@angular/core';
    import { TranslateLoader } from '@ngx-translate/core';
    import { Observable, of } from 'rxjs';
    
    
    @Injectable()
    export class MiTranslateLoaderService implements TranslateLoader {
    
      getTranslation(lang: string): Observable<any> {
        return of({
          lbl_select: 'Select',
        });
      }
    }
    
        3
  •  2
  •   Stephen Rauch Afsar Ali    8 年前

    这对我有用。

    角cli 6.0.8

    RXJS2.2.2

    import {of} from 'rxjs/index';
    
    
    this.dataService.currentData
    
        .pipe(takeUntil(this.destroy$))
        .pipe(switchMap((myData:MyDataType) =>
          of(this.anotherService.get(myData._id))))
        .pipe(map((response) => {
             if(response instanceof Error) {
                console.log('error:');
                console.dir(response);
             }
             return response;
        }))
        .subscribe((data:any) => {
           doStuff(data);
          },
          response => {
            console.log('response error');
            console.log(response)
          },
          () => {
            console.log('response complete.');
    
    
          });
    
        4
  •  0
  •   HD..    8 年前

    随着版本6的发布, RXJS 改变了它的内部包结构

    https://www.academind.com/learn/javascript/rxjs-6-what-changed/#import-statement-update-path

    import 'rxjs/add/observable/of';
    // or 
    import { of } from 'rxjs/observable/of';
    
        5
  •  0
  •   Suraj Rao Raas Masood    8 年前

    你需要导入 of 从 rxjs/observable/of

    import { of } from "rxjs/observable/of";
    

    用途:

    return of({
      lbl_select: 'Select',
    });
    

    更新:用于 RXJS版本6 如果没有rxjs compat,则需要导入 属于 从 rxjs 正如@martin提到的。

    import { of } from 'rxjs';
    

    Migration guide to rxjs6

        6
  •  0
  •   glennsl Namudon'tdie    8 年前

    解决方法是直接返回(..):

    getTranslation(lang: string): Observable<any> {
        return of({
          lbl_select: 'Select',
        });