J'utilise Angular 5 et j'ai créé un service en utilisant angular-cli
Ce que je veux faire, c'est créer un service qui lit un fichier json local pour Angular 5.
C'est ce que j'ai ... je suis un peu coincé ...
import { Injectable } from '@angular/core';
import { HttpClientModule } from '@angular/common/http';
@Injectable()
export class AppSettingsService {
constructor(private http: HttpClientModule) {
var obj;
this.getJSON().subscribe(data => obj=data, error => console.log(error));
}
public getJSON(): Observable<any> {
return this.http.get("./assets/mydata.json")
.map((res:any) => res.json())
.catch((error:any) => console.log(error));
}
}
Comment puis-je terminer cela?
javascript
json
angular
dhilt
la source
la source
HttpClientModule
ne doit pas être injecté dans le constructeur.Réponses:
Vous devez d'abord injecter
HttpClient
et nonHttpClientModule
, deuxième chose que vous devez supprimer.map((res:any) => res.json())
vous n'en aurez plus besoin car le nouveauHttpClient
vous donnera le corps de la réponse par défaut, enfin assurez-vous d'importerHttpClientModule
dans votreAppModule
:pour l'ajouter à votre composant:
la source
Vous avez une solution alternative, importer directement votre fichier json.
Pour compiler, déclarez ce module dans votre fichier typings.d.ts
Dans votre code
la source
import { default as data_json } from '../../path_of_your.json';
Pour Angular 7, j'ai suivi ces étapes pour importer directement les données json:
Dans tsconfig.app.json:
ajouter
"resolveJsonModule": true
à"compilerOptions"
Dans un service ou un composant:
Puis
la source
J'ai trouvé cette question en cherchant un moyen de vraiment lire un fichier local au lieu de lire un fichier depuis le serveur Web, que je préfère appeler un "fichier distant".
Appelez simplement
require
:Le code source Angular-CLI m'a inspiré: j'ai découvert qu'ils incluent des modèles de composants en remplaçant la
templateUrl
propriété partemplate
et la valeur par unrequire
appel à la ressource HTML réelle.Si vous utilisez le compilateur AOT, vous devez ajouter les définitions de type de nœud en ajustant
tsconfig.app.json
:la source
require
j'avais besoin d'installer@types/node
en exécutantnpm install @types/node --save-dev
comme indiqué iciConsultez cet article pour plus de détails .
la source
"allowSyntheticDefaultImports": true
à mon tsconfig.json 'compilerOptions', mais uniquement pour arrêter une erreur de peluchage pour TypeScript, PAS une erreur réelle.Essaye ça
Écrivez du code dans votre service
importer un fichier json
Dans le composant
la source
Créons un fichier JSON, nous le nommons navbar.json, vous pouvez le nommer comme vous le souhaitez!
navbar.json
Nous avons maintenant créé un fichier JSON avec des données de menu. Nous allons aller au fichier du composant de l'application et coller le code ci-dessous.
app.component.ts
Votre application Angular 7 est maintenant prête à servir les données du fichier JSON local.
Accédez à app.component.html et collez-y le code suivant.
app.component.html
la source
En utilisant Typescript 3.6.3 et Angular 6, aucune de ces solutions n'a fonctionné pour moi.
Ce qui a fonctionné, c'est de suivre le tutoriel ici qui dit que vous devez ajouter un petit fichier appelé
njson-typings.d.ts
à votre projet, contenant ceci:Une fois cela fait, je pourrais simplement importer mes données json codées en dur:
et utilisez-le dans mon composant:
la source