En Angular2, podría tener una carpeta /data/ y un archivo json allí y podría acceder a él en localhost: 4200/data/something.json.
Esto ya no es posible en Angular4.
¿Alguna idea de cómo hacer que funcione?
puedes usar este codigo
@Injectable() export class AppServices{ constructor(private http: Http) { var obj; this.getJSON().subscribe(data => obj=data, error => console.log(error)); } public getJSON(): Observable<any> { return this.http.get("./file.json") .map((res:any) => res.json()) .catch((error:any) => console.log(error)); } } aquí file.json es su archivo json local.
ver aquí también
también vea el registro de cambios de angular-cli para la ruta
Por supuesto que es posible. Supongamos que aquí está su archivo json

Y aquí está tu código para llamar al json.
import { Injectable } from '@angular/core'; import { Http, Headers, Response } from '@angular/http'; import { Observable } from 'rxjs'; import 'rxjs/add/operator/map' @Injectable() export class YourService { constructor(private http: Http) { } getAdvantageData(){ let apiUrl = './assets/data/api/advantage.json'; return this.http.get(apiUrl) .map( (response: Response) => { const data = response.json(); return data; }); } }También puede usar "requerir";
let test = require('./test.json');