Angular4: how do access local json?

前端 未结 7 2171
傲寒
傲寒 2020-12-06 05:00

In Angular2 you could have a folder /data/ and a json file there and you could access it at localhost:4200/data/something.json.

This is no longer possible in Angular

相关标签:
7条回答
  • 2020-12-06 05:38

    You can use "require" too;

    let test = require('./test.json');
    
    0 讨论(0)
  • 2020-12-06 05:38

    Based on this post, here is complete answer for Angular 6+:

    From angular-cli doc, json can be considered as assets and accessed from standard import without use of ajax request.

    Let's suppose you add your json files into "your-json-dir" directory:

    1. add "your-json-dir" into angular.json file (:

      "assets": [ "src/assets", "src/your-json-dir" ]

    2. allow import of json modules into typings.d.ts file to prevent from typescript errors:

      declare module "*.json" { const value: any; export default value; }

    3. in your controller/service/anything else file, simply import the file by using this relative path:

      import * as myJson from 'your-json-dir/your-json-file.json';

    0 讨论(0)
  • 2020-12-06 05:39

    I figured it out.

    In Angular2 I had the folder under the src folder. In Angular4 you have to have it in the root folder.

    Example:

    Angular2:

    root / src / data / file.json

    Angular4:

    root / data / file.json

    0 讨论(0)
  • 2020-12-06 05:41

    you can use this code

    @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));
    
         }
    }
    

    here file.json is your local json file.

    see here also

    • How to get a json file in angular2 using the Http class

    also see the changlog of angular-cli for path

    • https://github.com/angular/angular-cli/blob/master/CHANGELOG.md#100-rc4-2017-03-20
    0 讨论(0)
  • 2020-12-06 05:47

    You could add your folder location under Assets tag in angular.json

    "assets": [
              "src/favicon.ico",
              "src/assets",
              "src/api"
            ],
    
    0 讨论(0)
  • 2020-12-06 05:52

    I was facing the same issue, where my Observable Angular service was located at inside 'src/app/' folder and it was trying to load a local JSON file. I tried to put the JSON file inside the same app folder, inside a new 'api' folder, used various kinds of relatives/absolute routes, but it didn't help and I got 404 error. The moment I put it inside 'assets' folder, it worked. I guess there is more to it?

    Maybe this link helps:

    COMPONENT-RELATIVE PATHS IN ANGULAR

    0 讨论(0)
提交回复
热议问题