2017-01-19 13 views
0
import {Component} from 'angular2/core'; 
import {Observable} from 'rxjs/Observable'; 
import {Http} from 'angular2/http'; 
import {SpsheetService} from './spsheet.service'; 
import 'rxjs/Rx'; 


@Component({ 
selector: 'my-spsheet', 
template: ` 
      <button id="fetch" (click)="reloadData()">Reload Data</button> 
      <table class="table"> 
      <thead> 
       <tr> 
        <th *ngFor="#head of heads"> 
         {{head | async}} 
        </th> 
       </tr> 
      </thead> 
      <tbody> 
       <tr *ngFor="#dat of data"> 
        <td *ngFor="#head of heads" contenteditable="true"> 
         {{dat.head | async}} 
        </td> 
       </tr> 
      </tbody> 
     </table> 
     `, 
providers: [SpsheetService] 
}) 

export class SpsheetComponent { 
    data:any[]; 
    heads:string[]; 
    otherdata:string[]; 
    constructor(private _http:Http,private _spservice:SpsheetService){} 

    reloadData(){ 
     this._spservice.fetchData() 
      .subscribe(function(data) 
      { 
       var me =this; 
       me.data =[]; 
       me.data = data; 
       me.heads = Object.keys(data[0]); 
       var len = me.heads.length; 
       console.log(me.heads); 

      }, 
      err => console.log(err), 
      () => console.log('Completed')); 
    } 


} 

JSONファイルからデータを読み込み、HTMLテーブルに構造化しています。私はデータをフェッチすることもできるし、構造も問題ですが、HTMLテーブルとして反映されません。補間は機能しません。変数にはそれぞれの値が入っていますが。angular2で補間が機能しない

+0

あなたは余分なバックティックを持っています!! –

+0

私はこのフォーラムのために単純にスタイル配列を削除していました。申し訳ありません –

答えて

2

コード全体が文字列になっている余分なBackTickがあります。それを取り除くだけです。コピーは、以下のコードを貼り付けます - 私はそれのまわりで働いている

import {Component} from 'angular2/core'; 
import {Observable} from 'rxjs/Observable'; 
import {Http} from 'angular2/http'; 
import {SpsheetService} from './spsheet.service'; 
import 'rxjs/Rx'; 


@Component({ 
selector: 'my-spsheet', 
template: ` 
      <button id="fetch" (click)="reloadData()">Reload Data</button> 
      <table class="table"> 
      <thead> 
       <tr> 
        <th *ngFor="#head of heads"> 
         {{head | async}} 
        </th> 
       </tr> 
      </thead> 
      <tbody> 
       <tr *ngFor="#dat of data"> 
        <td *ngFor="#head of heads" contenteditable="true"> 
         {{dat.head | async}} 
        </td> 
       </tr> 
      </tbody> 
     </table> 
     `, 
], 
providers: [SpsheetService] 
}) 

export class SpsheetComponent { 
    data:any[]; 
    heads:string[]; 
    otherdata:string[]; 
    constructor(private _http:Http,private _spservice:SpsheetService){} 

    reloadData(){ 
     this._spservice.fetchData() 
      .subscribe(function(data) 
      { 
       var me =this; 
       me.data =[]; 
       me.data = data; 
       me.heads = Object.keys(data[0]); 
       var len = me.heads.length; 
       console.log(me.heads); 

      }, 
      err => console.log(err), 
      () => console.log('Completed')); 
    } 


} 
+0

このフォーラムに掲示している間、それは問題ではないかもしれません。 –

+0

サンプルを提供できますか? Plunkrでは...私はそのようなデータを見ることができないので、それは可能ですか? –

+0

確かに、ここに私がフェッチ午前データである:\t [ \t \t { \t \t \t "ID":1、 \t \t \t "タイプ": "ドーナツ"、 \t \t \t "名前": "ケーキ" 、 \t \t \t "イメージ": "イメージ/ 0001.jpg"、 \t \t \t "サムネイル": "画像/サムネイル/ 0001.jpg" \t \t}、 \t \t { \t \t \t "ID":2、 \t \t \t "タイプ": "銃"、 \t \t \t "名前": "AK47"、 \t \t \t "イメージ":「イメージ/ 0001 .JPG」、 \t \t \t "サムネイル": "画像/サムネイル/ 0001.jpg" \t \t} ] –

1

を、それが実際に加入者の「この」インスタンスの問題でした。

実際の正しいコードは次のとおりです。

import {Component} from 'angular2/core'; 
import {Observable} from 'rxjs/Observable'; 
import {Http} from 'angular2/http'; 
import {SpsheetService} from './spsheet.service'; 
import 'rxjs/Rx'; 


@Component({ 
selector: 'my-spsheet', 
template: ` 
      <button id="fetch" (click)="reloadData()">Reload Data</button> 
      <table class="table"> 
      <thead> 
       <tr> 
        <th *ngFor="#head of heads"> 
         {{head}} 
        </th> 
       </tr> 
      </thead> 
      <tbody> 
       <tr *ngFor="#dat of data"> 
        <td *ngFor="#head of heads" contenteditable="true"> 
         {{dat[head]}} 
        </td> 
       </tr> 
      </tbody> 
     </table> 
     `, 
providers: [SpsheetService] 
}) 

export class SpsheetComponent { 
    data:any[]; 
    heads:string[]; 
    otherdata:string[]; 
    constructor(private _http:Http,private _spservice:SpsheetService){} 

    reloadData(){ 
     var me =this; 
     me._spservice.fetchData() 
      .subscribe(function(data) 
      { 
       me.data =[]; 
       me.data = data; 
       me.heads = Object.keys(data[0]); 
       var len = me.heads.length; 
       console.log(me.heads); 

      }, 
      err => console.log(err), 
      () => console.log('Completed')); 
    } 


} 
+0

使用矢印機能は、代わりに 'この' 無傷のコンテキストを維持します。このように.subscribe((data)=> { this.data = []; this.data = data; this.heads = Object.keys(data [0]); var len = this.heads。長さ; console.log(this.heads); }、 err => console.log(err)、 ()=> console.log( '完了')); –

4

使用の矢印の機能の代わりにそのままthisのコンテキストを維持します。

+0

それは決してそれに影響を与えません、彼らは同じものを書くのはちょうど2つの異なるスタイルです、と思います。 –

関連する問題