Angular 6: 属性 'of' 在类型 'typeof Observable' 上不存在
Angular 6: Property 'of' does not exist on type 'typeof Observable'
我正在使用 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',
});
}
}
您需要从 rxjs/observable/of
导入 of
import { of } from "rxjs/observable/of";
用法:
return of({
lbl_select: 'Select',
});
更新:对于没有 rxjs-compat 的 rxjs 版本 6,您需要从 rxjs
本身导入 of
,如@martin 所述。
import { of } from 'rxjs';
随着版本 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';
从 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
包时它才会工作
您可以从 rxjs
导入 of
:
import { Observable,of } from 'rxjs';
而且只是 return 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',
});
}
}
解决方法是直接return of(..) :
getTranslation(lang: string): Observable<any> {
return of({
lbl_select: 'Select',
});
这对我有用。
Angular 命令行界面 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.');
});
我正在使用 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',
});
}
}
您需要从 rxjs/observable/of
of
import { of } from "rxjs/observable/of";
用法:
return of({
lbl_select: 'Select',
});
更新:对于没有 rxjs-compat 的 rxjs 版本 6,您需要从 rxjs
本身导入 of
,如@martin 所述。
import { of } from 'rxjs';
随着版本 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';
从 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
包时它才会工作
您可以从 rxjs
导入 of
:
import { Observable,of } from 'rxjs';
而且只是 return 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',
});
}
}
解决方法是直接return of(..) :
getTranslation(lang: string): Observable<any> {
return of({
lbl_select: 'Select',
});
这对我有用。
Angular 命令行界面 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.');
});