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',
});
}
}
RxJS 6以降、of()
(Observable.of()
のRxJS 5)を使用する正しい推奨方法は次のとおりです。
import { of } from 'rxjs';
import { of } from 'rxjs/observable/of';
は、rxjs-compat
パッケージがインストールされました。
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',
});
}
}
_
これは私のために働いています。
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.');
});
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';
解決策は、of(..)を直接返すことです:
getTranslation(lang: string): Observable<any> {
return of({
lbl_select: 'Select',
});
バージョン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';