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