Angular2 n - prise en argument non valide [object object] ... pour tuyau 'AsyncPipe'
J'obtiens une erreur lors de l'affichage des résultats de mon appel de service. La page html a un ngFor avec le | async. Je peux faire l'appel, obtenir des résultats, mais un message d'erreur lorsque vous essayez d'afficher la page. Je sais que la variable besoin d'être un Observables pour l'asynchrone à travailler. Je ne suis pas sûr de ce que je fais de mal et nous avons essayé plusieurs choses. Toute réflexion est apprécié.
Message D'Erreur:
Argument non valide '[object object],[object object],[object object],[object object],[object object],[object object],[object object],[object object],[object object],[object object],[object object],[object object],[object object],[object object],[object object],[object object],[object object],[object object],[object object],[object object] " pour tuyau 'AsyncPipe'
Définition De La Variable
public products:Observable<Product[]>;
Appel au Service
ngOnInit() {
this.productService.load().subscribe(
data => {
//Set the products Array
this.products = data['_embedded'].products;
},
error => console.log('Could not find product catalog.')
);
}
Appel De Service
load() {
return this._http.get(`http://localhost:8000/products`).map(response => response.json());
}
HTML
<tbody *ngFor="let product of products | async">
<tr>
<td>{{product.sku}}</td>
<td>{{product.materialNumber}}</td>
<td>{{product.price}}</td>
<td>{{product.baseUom}}</td>
<td>{{product.packageSize}}</td>
<td>{{product.casePack}}</td>
<td>{{product.weight}}</td>
<td>{{product.height}}</td>
</tr>
</tbody>
Des Données À Partir De L'Appel
OriginalL'auteur Don | 2016-06-30
Vous devez vous connecter pour publier un commentaire.
Async
pipe a besoin d'unObservable
plutôt unArray
.Dans votre cas, essayez de supprimer
async
:Également modifier la définition des variables:
Explication:
array | async
nesubscribe
par lui-même.Le code
transforme une
Observable
àArray of Products
Mise à jour:
Cela fonctionne déjà dans
async
: depuisproducts
est un tableau vide,ngFor
ne fonctionne pas. LorsqueObservable
obtient une réponse et remplit les données dansproducts
, unchange detection
ronde prend de la place et passe parngFor
à nouveau (maintenant le remplissage de produits)Une autre chose bizarre que j'ai remarqué (je peux me tromper):
ngFor
ressemble devrait être surtr
:Dans ce cas, vous aurez de multiples lignes et juste un
tbody
J'ai mis à jour la réponse avec plus d'explications
Merci Andrei.
OriginalL'auteur Andrei Zhytkevich