Angular 6 Свойство 'map' не существует для типа 'Object' - PullRequest
0 голосов
/ 25 мая 2018

У меня есть API, который возвращает объекты / массив, как это:

(2) [{...}, {...}]      object

  0: {a: '1', b: {id: '1'}}
  1: {a: '2', b: {id: '2'}}

Так что это выглядит как массив объектов (но debuges говорит 'Object').

Так в моем кодеУ меня есть:

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 голосов
/ 29 октября 2018

В Angular 6x с rxjs 6.3.3 вы можете сделать это.В файле (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))));
  }
}
0 голосов
/ 30 июля 2018

Вы должны импортировать карту в ng6 следующим образом:

import { map } from 'rxjs/operators';
0 голосов
/ 01 июня 2018

Следующие операторы были переименованы в RXJS6

catch() => catchError()
do() => tap()
finally() => finalize()
switch() => switchAll()

Кроме того, некоторые методы создания наблюдаемых были переименованы / реорганизованы:

throw() => throwError()
fromPromise() => from() (this automatically detects the type)

FOR MAP синтаксис

import { map } from 'rxjs/operators';

myObservable
  .pipe(map(data => data * 2))
  .subscribe(...);
0 голосов
/ 05 июля 2018

Мне пришлось указать тип возвращаемого значения с (data: any) => {...}

0 голосов
/ 01 июня 2018

попробуйте это:

npm install rxjs @ 6 rxjs-compat @ 6 --saven

пожалуйста, посетите Angular 2 beta.17: Property 'карта 'не существует для типа' Observable ' для более подробного объяснения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...