2017-11-06 16 views
0

私は画像と説明(画像もローカルです)を含むローカルjsonファイルからデータを取得するHttpClientでこのアプリケーションを開発しています。配列)、私はビューでそれを出力するのに問題があります。これは、要求です:角度4:* ngForでデータを出力していません

export class AppComponent { 
    spaceScreens:Array<any>; 

    constructor(private http:HttpClient) { 

     this.http.get('assets/data/data.json') 

     .subscribe(data => { 

     this.spaceScreens = data['results']; 
      console.log(data); 

     }, (err: HttpErrorResponse) => { 
      if (err.error instanceof Error) { 
      console.log('An error occurred:', err.error.message); 
      } else { 
      console.log(`Backend returned code ${err.status}, body was: ${err.error}`); 
      } 
     }); 
    } 

} 

JSON:

{ 
    "screenshots": [ 
     { 
      "img": "assets/images/space1.jpg", 
      "description": "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.", 
      "liked": "0" 
     }, //etc 

HTML:

<mat-card *ngFor="let spaceScreen of spaceScreens; let i = index" > 
      <img mat-card-image src="{{ spaceScreen.img }}"> 
      <mat-card-content> 
       <p>{{ spaceScreen.description }}</p> 
      </mat-card-content> 
      <mat-card-actions> 
       <button mat-button> 
       <i class="material-icons md-18" >favorite</i> LIKE 
       </button> 
       <button mat-button> 
       <i class="material-icons md-18">delete</i> DELETE 
       </button> 
      </mat-card-actions> 
      </mat-card> 

これはログです:

enter image description here

私は問題を推測しますやらなければならない地図と一緒に?しかし、私が応答をマッピングしようとすると、単語に下線が引かれます。誰かが私に助けを与えることができますか?あなたは、文字列の補間でそれらを設定することではなく、その後の属性への結合を好むはずです2+あなたは

+1

この例では、 'this.spaceScreens = data ['results'];'を保存しています。これは 'this.spaceScreens = data ['screenshots'];'投稿したjsonと一致させるべきでしょうか? – LLai

+0

これはコピーを貼り付ける際の問題です...ありがとうございました。しかし、Niles Tannerの答えが有効であることを確認しています – Mellville

+0

どちらが真実でないか – Vega

答えて

1
this.spaceScreens = data['results']; 

は、あなたのJSON形式に一致するように

this.spaceScreens = data['screenshots']; 

になるはずです。

+1

から来ました。 – Mellville

1

変更

<img mat-card-image src="{{ spaceScreen.img }}"> 

角度で

<img mat-card-image [src]="spaceScreen.img"> 

にありがとうございます。

+1

なぜですか?それらは異なる目的を持っています。 – lexith

+0

私は似たようにしてこの問題を解決しようとしましたが、うまくいっていませんでした。正解は@LLai – Mellville

1

セーフティオペレータを使用しようとしていますか?

<img mat-card-image [src]="spaceScreen?.img"> 
+0

答えがありがたいですが、私はすでに解決しています:) – Mellville

+0

いいえ、これはセーフ・オペレータを使うもう一つのアプローチです。 –

+0

これはうまくいきますが、jsonにマッチすることなく、これはうまくいかないことがわかります – Mellville

関連する問題