2017-10-05 17 views
-1

JSONとして構造化されたAPIからデータを取得する必要があります。 以下はデータを取得するコードで、console.logはすべてのデータを素早く出力します。しかし今、私は文字列補間を使ってそのデータをテンプレートファイルで使いたいと思っています。とにかくその機能の外に。私はちょうど'未定義'を印刷しようとしました。http取得リクエストから変数にデータを取得する

私はいくつかのチュートリアルを見て、それに関する記事を読んでいましたが、うまく動作しませんでした。 dataview.component.htmlテンプレートのデータを使用したいとしたら、どうすればよいですか?

NB:重要なことはわかりませんが、dataviewはappコンポーネントの子コンポーネントです(app/dataview)。

import { Component, OnInit } from '@angular/core'; 
import { HttpClient } from '@angular/common/http'; 


@Component({ 
    selector: 'app-dataview', 
    templateUrl: './dataview.component.html', 
    styleUrls: ['./dataview.component.css'] 
}) 
export class DataviewComponent implements OnInit { 

    results: string[]; 
    caretClicked = false; 
    menuOpened = false; 

    constructor(private http: HttpClient) {} 

    expandData() { 
    this.caretClicked= !this.caretClicked; 
    } 

    openMenu() { 
    this.menuOpened= !this.menuOpened; 
    } 

    ngOnInit(): void { 
     // Make the HTTP request: 
     this.http.get('MY URL HERE').subscribe(data => { 
      // Read the result field from the JSON response. 
      this.results = data['results']; 
      console.log(data); 
     }); 
    } 
} 
+0

コヒーレントな[mcve](*「何も試したことがありません」* - 何を意味するのか)は言い難いですが、恐らくhttps://stackoverflow.com/q/37867020/3001761またはhttps: /stackoverflow.com/q/34833358/3001761 – jonrsharpe

答えて

0

コンポーネントのテンプレートからデータにアクセスするには、results変数にバインドします。

コンポーネントクラスで指定されたプロパティにバインドできます。あなたの例では、resultscaretClickedおよびmenuOpenedとなります。

あなたが推測している問題は、http getが非同期であるということです。テンプレートでそれを処理する必要があります。

たとえば、テンプレートの上部に*ngIf = "results"を使用して、データが取得されるまでテンプレートが表示されないようにすることができます。

関連する問題