Angular 6:属性'of'在类型'typeof Observable'上不存在

HD.*_*D.. 7 rxjs angular6 rxjs6

我正在使用Angular 6 使用"rxjs":"^ 6.0.0",

错误:属性'of'在类型'typeof Observable'上不存在.

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',
    });
  }
}
Run Code Online (Sandbox Code Playgroud)

mar*_*tin 15

从RxJS 6开始,正确和推荐的使用方法of()(RxJS 5 in Observable.of())是这样的:

import { of } from 'rxjs';
Run Code Online (Sandbox Code Playgroud)

我认为import { of } from 'rxjs/observable/of';只有rxjs-compat安装了软件包才会有效.

  • 重要的是要注意你必须将"return Observable.of"更改为"return of return" (6认同)

Shu*_*rma 9

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

import { of } from 'rxjs';
Run Code Online (Sandbox Code Playgroud)

仅当您的应用rxjs-compat 程序安装了软件包时才有效

您可以ofrxjs以下位置导入:

import { Observable,of } from 'rxjs';

并简单地返回 of()

 return of({
      lbl_select: 'Select',
    });
Run Code Online (Sandbox Code Playgroud)

所以你的代码将是:

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',
    });
  }
}
Run Code Online (Sandbox Code Playgroud)