J'ai un modèle:
@RestController @RequestMapping("/api/employe") @CrossOrigin("*") public class CollaborateurController { @Autowired private CollaborateurRepository collaborateurRepository; @RequestMapping(value="", method=RequestMethod.GET) public List<Collaborateur> getEmp() { return (List<Collaborateur>) collaborateurRepository.findAll(); }
employees.component.ts[
<tr *ngFor="let item of pageEmployes"> <td>{{item.nom}}</td> <td>{{item.prenom}}</td> </tr>
employés .component.html
ngOnInit(){ this.loadEmployes(); } pageEmployes:any={}; loadEmployes():Observable<any>{ this.http.get("http://localhost:8080/api/employe").subscribe( data=>{ console.log(data); this.pageEmployes = data; }, err=>{ console.log(err); } ); return this.pageEmployes; }
CollaborateurController.java
export class Employe { constructor(public id?: any, public nom?: String, public prenom?: String, public cin?: String){} }
Cela lance erreur moi:
ERREUR Erreur: impossible de trouver un autre objet de support '[objet objet]' de type 'objet'. NgFor ne prend en charge que la liaison aux Iterables tels que les tableaux.
Accès à XMLHttpRequest à ' http: // localhost: 8080 / api / employe ' depuis l'origine ' http: // localhost: 4200 ' a été bloqué par la stratégie CORS: Non 'Access-Control-Allow-Origin' l'en-tête est présent sur la ressource demandée.
3 Réponses :
Vous essayez de parcourir un objet et non un tableau. Remplacez pageEmployes: any = {}
par pageEmployes = []
.
Et ce renvoie this.pageEmployee;
n'est pas nécessaire, il suffit de le supprimer avec la valeur de retour dans la fonction.
fonction avec http changement d'appel à ceci:
loadEmployes() { this.http.get("http://localhost:8080/api/employe").subscribe( data=>{ console.log(data); this.pageEmployes = data; }, err=>{ console.log(err); } ); }
Le ngIf
est ici redondant. Il suffit d'initialiser pageEmployes
en tant que tableau vide car le ngFor
n'aura pas de données à parcourir et n'affichera donc rien.
Oh ouais ok je l'ai XD
Je veux afficher les données de réponse dans le front-end et cela ne fonctionne pas: /
Quelles données obtenez-vous lorsque vous imprimez votre réponse avec console.log (data);
?
En raison de
pageEmployes: Employe[] = [];
il y a réponse invalide. En savoir plus sur la politique CORS au printemps https://spring.io/guides/gs/rest-service-cors/
À propos de l'erreur angulaire, vous souhaitez parcourir l'objet, vous devez donc changer le type de pageEmployes
pageEmployes:any={};
dans
Access to XMLHttpRequest at 'http://localhost:8080/api/employe' from origin 'http://localhost:4200' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
Ok je vais l'essayer
Vous essayez d'itérer (boucler) un objet, pas un tableau d'après votre exemple de code.
Cette partie est fausse:
pageEmployes: Employe[] = [];
@Kindth Heureux d'avoir pu vous aider, n'oubliez pas de marquer la réponse comme solution. Cela peut aider d'autres personnes ayant des problèmes similaires à identifier rapidement une bonne réponse
Cela fonctionne également, je devrais ajouter cette ligne sur @SpringBootApplication principale (exclude = {org.springframework.boot.autoconfigure.security.servlet.Se curityAutoConfigurat ion.class}) pour les personnes qui utilisent la sécurité de printemps