类型'对象'上不存在Angular 6属性'map'

时间:2018-05-25 11:11:32

标签: angular6

我有一个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'.

但应用程序运行良好是正确显示此数据。但这个错误很烦人。

我该怎么办?

5 个答案:

答案 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>'以获取更多信息。