Je suis nouveau dans angular, et j'ai un problème dans le service http . J'ai essayé this.http.get (' http://jsonplaceholder.typicode.com/posts/1 ') comme exemple de données et ça marche . Mais quand j'ai utilisé this.http.get ('src/data/employees.json'), il me montre 404 (Not Found)
employés.service.ts
import { Injectable } from '@angular/core';
import { Http } from '@angular/http';
import 'rxjs/add/operator/map';
@Injectable()
export class EmployeesService {
constructor(private http: Http) { }
getEmployees() {
this.http.get('src/employees.json')
.map(response => response.json() )
.subscribe(result => console.log(result) );
}
}
app.component.ts
import { Component } from '@angular/core';
import { EmployeesService } from './employees.service';
@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
constructor(private employeesService: EmployeesService){}
ngOnInit() {
this.employeesService.getEmployees();
}
}
Si vous utilisez angular cli
, vous devez sortir votre fichier json en le configurant dans .angular-cli.json
comme suit:
"assets": [
"assets",
"src/employees.json"
],
Mais je vous recommanderais de créer un dossier du type data
dans votre dossier src
et de placer toutes vos données .json
classées. Alors votre config assets
comme ceci:
"assets": [
"assets",
"data"
],
De cette façon, cli produira toujours le dossier data
dans son intégralité, vous évitant ainsi de spécifier chaque fichier .json
séparément.
Dans le cas où vous changez
.angular-cli.json
pendantng serve
pour votre changements pour prendre effet, vous devez redémarrerng serve
on dirait que vous essayez d'accéder à un fichier du répertoire "src", qui n'est jamais rendu disponible de manière statique.
Si vous devez accéder directement à ce fichier json, vous devez vous assurer qu'il est stocké dans le répertoire approprié du serveur Web sur lequel il peut servir directement (cela se fait généralement en configurant les paramètres static/serve sur le backend).
Le fait qu’un fichier existe dans votre dossier de projet ne signifie pas que le serveur Web le rend entièrement disponible.
Vous n'êtes pas obligé de naviguer dans votre dossier src. Utilisez simplement this.http.get('employees.json')
si le fichier se trouve dans votre dossier src ou this.http.get('data/employees.json')
si vous avez un dossier de données dans votre dossier src.
Cela fonctionne car tout le code que vous écrivez dans vos composants ou services (ou ailleurs) recherche un chemin relatif à votre index.html si vous omettez un /
en tête.
Votre chemin de fichier est probablement incorrect. d'où le 404 non trouvé.
Essayez d’éditer le chemin avec ../ ou ./ ou ../../ etc.