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?
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(...);
vous devez importer la carte dans ng6 comme ceci:
import { map } from 'rxjs/operators';
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))));
}
}
Je devais spécifier le type de la valeur de retour avec (data: any) => {...}
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.