Estoy usando Angular 5 y he creado un servicio usando el angular-cli
Lo que quiero hacer es crear un servicio que lea un archivo json local para Angular 5.
Esto es lo que tengo ... estoy un poco estancado ...
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));
}
}
¿Cómo puedo terminar esto?
javascript
json
angular
dhilt
fuente
fuente

HttpClientModuleno debe inyectarse en constructor.Respuestas:
Primero tienes que inyectar
HttpClienty noHttpClientModule, segundo que tienes que eliminar.map((res:any) => res.json())ya no lo necesitarás porque el nuevoHttpClientte dará el cuerpo de la respuesta por defecto, finalmente asegúrate de importarHttpClientModuleen tuAppModule:para agregar esto a su componente:
fuente
Tienes una solución alternativa, importando directamente tu json.
Para compilar, declare este módulo en su archivo typings.d.ts
En tu código
fuente
import { default as data_json } from '../../path_of_your.json';Para Angular 7, seguí estos pasos para importar directamente datos json:
En tsconfig.app.json:
añadir
"resolveJsonModule": trueen"compilerOptions"En un servicio o componente:
Y entonces
fuente
Encontré esta pregunta cuando buscaba una manera de leer realmente un archivo local en lugar de leer un archivo del servidor web, que prefiero llamar "archivo remoto".
Solo llama
require:El código fuente de Angular-CLI me inspiró: descubrí que incluyen plantillas de componentes reemplazando la
templateUrlpropiedad portemplatey el valor por unrequirellamada al recurso HTML real.Si usa el compilador AOT, debe agregar las definiciones de tipo de nodo ajustando
tsconfig.app.json:fuente
requirenecesitaba para instalar@types/nodemediante la ejecuciónnpm install @types/node --save-devcomo se discute aquíConsulte este artículo para obtener más detalles. .
fuente
"allowSyntheticDefaultImports": truea mi tsconfig.json 'compilerOptions', pero solo para detener un error de linting para TypeScript, NO un error real.Prueba esto
Escribe código en tu servicio
importar archivo json
En componente
fuente
Vamos a crear un archivo JSON, lo llamamos navbar.json, ¡puedes nombrarlo como quieras!
navbar.json
Ahora hemos creado un archivo JSON con algunos datos de menú. Iremos al archivo de componentes de la aplicación y pegaremos el siguiente código.
app.component.ts
Ahora su aplicación Angular 7 está lista para entregar los datos del archivo JSON local.
Vaya a app.component.html y pegue el siguiente código en él.
app.component.html
fuente
Usando TypeScript 3.6.3 y Angular 6, ninguna de estas soluciones funcionó para mí.
Lo que sí funcionó fue seguir el tutorial aquí que dice que necesita agregar un pequeño archivo llamado
njson-typings.d.tsa su proyecto, que contiene esto:Una vez hecho esto, simplemente podría importar mis datos json codificados:
y usarlo en mi componente:
fuente