web-dev-qa-db-fra.com

La propriété 'carte' angulaire 6 n'existe pas sur le type 'objet'

J'ai une api qui retourne des objets/un tableau comme ceci:

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

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

Cela ressemble donc à un tableau d’objets (mais debuges dit «Object»).

Donc dans mon code j'ai:

return this.http.get(this.url).pipe(
  map(datas => {
    return datas.map(data => {
      let object = {
        a: data['a'],
        b: data['b']['id'],
      }
      return object;
    })
  })
);

mais là:

return datas.map(data => {

J'ai une erreur:

Property 'map' does not exist on type 'Object'.

Mais l'application fonctionne bien est montre correctement ces données. Mais cette erreur est agaçante.

Que puis-je faire?

4
peryztor

Les opérateurs suivants ont été renommés dans RXJS6

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

De plus, certaines méthodes de création d'observables ont été renommées/refactorisées:

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

POUR MAP syntaxe

import { map } from 'rxjs/operators';

myObservable
  .pipe(map(data => data * 2))
  .subscribe(...);
5
Vignesh

vous devez importer la carte dans ng6 comme ceci:

import { map } from 'rxjs/operators';
1
Viclotana

Dans Angular 6x avec Rxjs 6.3.3, vous pouvez le faire. Dans le fichier (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))));
  }
}
1
EdgarMorales

Je devais spécifier le type de la valeur de retour avec (data: any) => {...}

1
Laurie Clark

essaye ça:

npm installer rxjs @ 6 rxjs-compat @ 6 --saven

veuillez visiter Angular 2 beta.17: La propriété 'map' n'existe pas sur le type 'Observable <Response>' pour plus d'explications.

0
Citizen