2017-11-21 14 views
-1

私は角型cliで新しくjsonファイルからデータを取得しようとしていますが、動作していません。また、jsonファイルから特定のデータ値を取得しようとしていますが、コード: 私のコード:Angularを使用してJSONデータを取得する

app.components.ts:employedata.json

import { Component } from '@angular/core'; 
import { BackendApiService } from './services/backend-api.service'; 

@Component({ 
    selector: 'app-root', 
    templateUrl: './app.component.html', 
    styleUrls: ['./app.component.css'] 
}) 
export class AppComponent { 
    public arry; 

    constructor(private backendApiService: BackendApiService) {} 

    profile = []; 

    ngOnInit() { 
     arry = this.backendApiService.getUser() 
      .subscribe(data) 
      .srchlink 
      .map(function(srchlink) { 
       return srchlink.slink; 
      }); 
    } 

    testings() { 
     console.log(arry); 
     console.log(data.autocomp.sval); 
    } 
} 

バックエンドapi.service.ts

import { Injectable } from '@angular/core'; 
import { Http, Response } from '@angular/http'; 

import 'rxjs/add/operator/map'; 

@Injectable() 
export class BackendApiService { 
    private _url="assets/employeedata.json"; 
    public comUrl; 

    constructor (private http: Http) {} 

    getUser() { 
     return this.http.get(this._url) 
      .map((res:Response) => res.json()); 
    } 
} 
{ 
    "srchlink": [ 
     { "slink":"google.com"}, 
     { "slink":"yahoo.com"}   
    ], 
    "autocomp": [ 
     { "sval":"Table"}, 
     { "sval":"Back"}, 
     { "sval":"Drag"}, 
    ] 
} 
+0

どのようなエラーが表示されますか?あなたの角と角度cliのバージョンは何ですか? – AndreaM16

+0

@ angular/cli:1.4.4 –

+0

あなたのパスは正しいですか? '。/ assets/employeedata.json'かもしれません。 – AndreaM16

答えて

2

EDIT:あなたのコメントからの要求を含むように更新。

subscribeの使用が間違っています。渡すパラメータ(data)は、処理できるデータが与えられるコールバック関数でなければなりません。 ngOnInitに次の変更は、あなたのために働く必要があります。

ngOnInit() { 
    this.backendApiService.getUser() 
     .subscribe(data => { 
      arry = data.srchlink 
       .map(function(srchlink) { 
        return srchlink.slink; 
       }); 

      autocompv = data.autocomp 
       .map(function(autocomp) { 
        return autocomp.sval; 
       }); 
     }); 
} 

注意すべき主なものは、あなたの例ではhttp.getは、あなたが順番にsubscribe以内にコールバック関数を使用する必要が理由です非同期操作、ということですデータ自体にアクセスすることができます。

+0

しかし、私は任意のデータを取得しています。ブランクのページを取得 –

+0

いいえ...データ値を取得するが、どのように私は配列のその値をプッシュすることができます –

+0

非常にserpen5非常にありがとう。しかし、この小さな助けは最終的にどのように配列内にその値をプッシュするか教えてください。私は2つの配列を作成しました:public arry = []; public autocompv = [];私はsrchlinkの値をarryにして、autocompvにvauleをautocompします。私に教えてください –

関連する問題