我有一个api,返回像这样的对象/数组:
(2) [{...}, {...}] object
0: {a: '1', b: {id: '1'}}
1: {a: '2', b: {id: '2'}}
所以它看起来像是对象数组(但是说明了'对象')。
所以在我的代码中我有:
return this.http.get(this.url).pipe(
map(datas => {
return datas.map(data => {
let object = {
a: data['a'],
b: data['b']['id'],
}
return object;
})
})
);
但是那里:
return datas.map(data => {
我收到了一个错误:
Property 'map' does not exist on type 'Object'.
但应用程序运行良好是正确显示此数据。但这个错误很烦人。
我该怎么办?
答案 0 :(得分:5)
以下运算符在RXJS6中重命名
catch() => catchError()
do() => tap()
finally() => finalize()
switch() => switchAll()
此外,一些Observable创建方法被重命名/重构:
throw() => throwError()
fromPromise() => from() (this automatically detects the type)
FOR MAP 语法
import { map } from 'rxjs/operators';
myObservable
.pipe(map(data => data * 2))
.subscribe(...);
答案 1 :(得分:1)
我必须使用(data:any)=> {...}
指定返回值的类型答案 2 :(得分:1)
您必须像这样在ng6中导入地图:
import { map } from 'rxjs/operators';
答案 3 :(得分:1)
在具有rxjs 6.3.3的Angular 6x中,您可以执行此操作。在文件(app.component.ts)
import { Component } from '@angular/core';
import { HttpClient, HttpParams, HttpHeaders} from '@angular/common/http';
import { Observable, throwError } from 'rxjs';
import { map, catchError, retry } from 'rxjs/operators';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent
{
_url = 'http://...';
constructor( private http: HttpClient ) { }
articles: Observable<any>;
// Method and constructor
getAPIRest()
{
const params = new HttpParams().set('parameter', 'value');
const headers = new HttpHeaders().set('Autorization', 'auth-token');
this.articles = this.http.get(this._url + '/articles', { params, headers })
.pipe( retry(3),
map((data => data),
catchError(err => throwError(err))));
}
}
答案 4 :(得分:0)
试试这个:
npm install rxjs @ 6 rxjs-compat @ 6 --saven
请访问Angular 2 beta.17: Property 'map' does not exist on type 'Observable<Response>'以获取更多信息。