javascript - proyecto - manual angular 6
Angular 5 Service para leer el archivo.json local (6)
Encontré esta pregunta cuando buscaba una forma de leer realmente un archivo local en lugar de leer un archivo del servidor web, que preferiría llamar un "archivo remoto".
Solo llame
require
:
const content = require(''../../path_of_your.json'');
El código fuente de Angular-CLI me inspiró: descubrí que incluyen plantillas de componentes al reemplazar la propiedad
template
por
template
y el valor mediante una llamada obligatoria al recurso HTML real.
Si usa el compilador AOT, debe agregar las definiciones de tipo de nodo ajustando
tsconfig.app.json
:
"compilerOptions": {
"types": ["node"],
...
},
...
Estoy usando Angular 5 y he creado un servicio usando 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 atascado ...
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?
Para Angular 7, seguí estos pasos para importar directamente datos json:
En tsconfig.app.json:
agregue
"resolveJsonModule": true
en
"compilerOptions"
En un servicio o componente:
import * as exampleData from ''../example.json'';
Y entonces
private example = exampleData;
Primero debe inyectar
HttpClient
y Not
HttpClientModule
, lo segundo que debe eliminar
.map((res:any) => res.json())
ya no lo necesitará porque el nuevo
HttpClient
le dará el cuerpo de la respuesta por defecto, finalmente asegúrese de importar
HttpClientModule
en su
AppModule
:
import { HttpClient } from ''@angular/common/http'';
import { Observable } from ''rxjs/Observable'';
@Injectable()
export class AppSettingsService {
constructor(private http: HttpClient) {
this.getJSON().subscribe(data => {
console.log(data);
});
}
public getJSON(): Observable<any> {
return this.http.get("./assets/mydata.json");
}
}
para agregar esto a su componente:
@Component({
selector: ''mycmp'',
templateUrl: ''my.component.html'',
styleUrls: [''my.component.css'']
})
export class MyComponent implements OnInit {
constructor(
private appSettingsService : AppSettingsService
) { }
ngOnInit(){
this.appSettingsService.getJSON().subscribe(data => {
console.log(data);
});
}
}
Prueba esto
Escribe el código en tu servicio
import {Observable, of} from ''rxjs'';
importar archivo json
import Product from "./database/product.json";
getProduct(): Observable<any> {
return of(Product).pipe(delay(1000));
}
En componente
get_products(){
this.sharedService.getProduct().subscribe(res=>{
console.log(res);
})
}
Tienes una solución alternativa, importando directamente tu json.
Para compilar, declare este módulo en su archivo typings.d.ts
declare module "*.json" {
const value: any;
export default value;
}
En su código
import { data_json } from ''../../path_of_your.json'';
console.log(data_json)
import data from ''./data.json'';
export class AppComponent {
json:any = data;
}
Vea este artículo para más detalles .