web-dev-qa-db-ja.com

Angular 6:プロパティ 'of'はタイプ 'typeof Observable'に存在しません

Angular 6 using "rxjs": "^ 6.0.0"、を使用しています

[〜#〜] error [〜#〜]: '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',
    });
  }
}
7
HD..

RxJS 6以降、of()Observable.of()のRxJS 5)を使用する正しい推奨方法は次のとおりです。

import { of } from 'rxjs';

import { of } from 'rxjs/observable/of';は、rxjs-compatパッケージがインストールされました。

15
martin

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',
    });
  }
}
_
4
Shubham Verma

これは私のために働いています。

Angular CLI 6.0.8

RxJS 6.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.');


      });
2
englishPete

rxjs/observable/ofからofをインポートする必要があります

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

使用法:

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

更新:rxjsバージョン6でrxjs-compatを使用しない場合、@ martinで言及されているof自体からrxjsをインポートする必要があります。

import { of } from 'rxjs';

rxjs6への移行ガイド

0
Suraj Rao

解決策は、of(..)を直接返すことです:

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

バージョン6のリリースで、RxJSは内部パッケージ構造を変更しました

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

import 'rxjs/add/observable/of';
// or 
import { of } from 'rxjs/observable/of';
0
HD..