type observables<{}> n'est pas assignable à n'importe quel type:Propriété de la longueur est manquant dans le type{} en caractères d'imprimerie
Je vais essayer d'obtenir des données JSON conservés dans le système local à l'aide Angular2 http.
import { Injectable } from '@angular/core';
import { Http, Response } from '@angular/http';
import { General } from './general';
import { Observable } from 'rxjs/Observable';
@Injectable()
export class GeneralService {
//#docregion endpoint
private statusUrl = './jsondata'; //URL to web API
//#enddocregion endpoint
//#docregion ctor
constructor (private http: Http) {}
//#enddocregion ctor
//#docregion methods, error-handling, http-get
getStatus (): Observable<General[]> {
return this.http.get(this.statusUrl)
.map(this.extractData)
.catch(this.handleError);
}
private extractData(res: Response) {
let body = res.json();
return body.data || { };
}
private handleError (error: Response | any) {
//In a real world app, we might use a remote logging infrastructure
let errMsg: string;
if (error instanceof Response) {
const body = error.json() || '';
const err = body.error || JSON.stringify(body);
errMsg = `${error.status} - ${error.statusText || ''} ${err}`;
} else {
errMsg = error.message ? error.message : error.toString();
}
console.error(errMsg);
return Observable.throw(errMsg);
}
}
J'obtiens une erreur- Type observables<{}> n'est pas cessible de type 'Observables'.Type '{}' n'est pas cessible de type' []'. La propriété length est manquant dans le type'{}'
Ici est un nom de classe. Im en utilisant rxjs-5.0. Je suis Angulaire.io Tour de héros et de faire mon propre projet. Toute aide à ce sujet?
OriginalL'auteur Protagonist | 2016-11-07
Vous devez vous connecter pour publier un commentaire.
J'ai changé mon importations en provenance
importer { Observables } à partir de 'rxjs/Observables';
pour
importer { Observables } à partir de 'rxjs';
Et tout a bien fonctionné
OriginalL'auteur Norman Pilusa
Le problème est que vous dites observables pour obtenir une liste de Genral tandis que vous obtenez un objet.
Si vous n'êtes pas d'accepter un tableau, alors vous devriez faire comme ceci
vous avez corps.de données, êtes-vous sûr que vous obtenez un objet de données, car les données obejct utiliser pour être si vous lisez un fichier json. essayez ce retour du corps | de| { };
OriginalL'auteur Jorawar Singh
Je voudrais ajuster la
extractData
comme ceci:Maintenant, il dit qu'il sera de retour
General[]
et aussi il affirme labody.data
d'être de ce type. En cas de résultat nul, tableau vide est retournéeany
? Si c'est le cas, alors votre frappe serait redondante, puisque les deuxany
et un tableau vide est compatible avec n'importe quel tableau.Toujours la même erreur
OriginalL'auteur Radim Köhler
Le compilateur dire que vous essayez d'affecter un objet à un tableau (des Généraux).
Je pense que votre problème est dans
return body.data || {}
dansextractData
. Essayezreturn body.data || []
à la place.OriginalL'auteur Alex
La mauvaise attribuer ne vient pas de la
extractData()
appel, mais à partir de lacatch()
un.Essayez ceci:
OriginalL'auteur jls2933
Mise à jour de votre code comme ci-dessous:
OriginalL'auteur Swanand