2017-07-27 20 views
0

2つの配列(写真とコメントはサーバーから来たもの)を含むオブジェクトデータを持っていますが、それらを* ngForで表示したいのですが、ngForは配列タイプのみを表示します。私は enter image description here ありがとう1枚のアレイ データの写真でそれを行うことができますどのように*複数の配列を持つngFor

this.comments=[]; 
// ... 
    .subscribe((data) => { 
    this.comments= data.comments; 
    console.log("data: ", data); 
    this.commentPhoto = data.Photo; 
    // I don't want to create another array 
    // I want to make commentPhoto and comments array in 1 Array to show them. 

HMTL

<ion-row *ngFor="let cm of comments"> 

    <ion-col col-2 style="border:1px solid grey;"> 
    <img src="{{cm.photo}}" style="width:45px;height:45px;"> 
    </ion-col> 

    <ion-col col-10 style="border:1px solid grey;"> 
    {{cm}} 
    </ion-col> 
</ion-row> 

は、ここに私のTsのファイルです。

+0

データの一部(写真とコメント)を表示できますか?これら2つを組み合わせて1つにすることもできますし、パイプを組み合わせて組み合わせることもできますが、その2つの間には関係がなければなりません。 –

+0

少なくとも、この「新しい」配列はどのように見えるか理解しづらいことがありますか?それを提示することができますか、これを解決しようとしたこと、そしてコード内の問題に直面しているところです。 – Alex

答えて

0

結果データを変更する必要があると思います。モデルを作って、PhotoDataとしましょう。

public class PhotoData 
{ 
    public Image Photo { get; set; } 
    public string Comment { get; set; } 
} 

TSファイルまたはサービスコールに渡します。

0

私はそれをこのように実行します。

/** 
    * Function to return an array of keys of an object 
    * @param itemObj 
    * @returns {string[]} 
*/ 
dataKeys(itemObj): Array<string> { 
    return Object.keys(itemObj); 
} 
<ion-row *ngFor="let key of dataKeys"> 

    <ion-col col-2 style="border:1px solid grey;" *ngFor="let item of dataKeys[key]"> 
    <img src="{{item}}" style="width:45px;height:45px;"> 
    </ion-col> 

</ion-row> 
1

私はあなたが1 *ngForから配列の両方を表示したいと思います。 データは、2つのアレイcommentphotoを持っています。

あなたはそれ二つの方法を達成することができ、一つは次のとおりです。使用index

両方 配列の長さ同じためであればここで
this.comments= data.comment; 
this.commentPhoto = data.Photo; 

、これを試してみてください。

<ion-row *ngFor="let cm of comments; let i = index"> 
    <ion-col col-2 style="border:1px solid grey;"> 
    <img src="{{commentPhoto[i]}}" style="width:45px;height:45px;"> // For photos 
    </ion-col> 
    <ion-col col-10 style="border:1px solid grey;"> 
    {{cm}} 
    </ion-col> 
</ion-row> 

第2に、両方のオブジェクトをレンダリング前の1か所のオブジェクトとして結合します。 テンプレートに:

data: [{comment: "...", photo: ""},..] 

これをレンダリングします。これはあなたのために動作することを願っています。

+0

私はこの解決策を早期に見たかったのと同じ解決策でした。あなたの素敵な答えと働きに感謝します。 – gnncrdm

0

すべての回答ありがとうございました。このように解決しました。

TS

.subscribe((data) => { 
    this.comments= data; 

HTMLここ

<ion-row *ngFor="let cm of comments.context; let i=index"> 

<ion-col col-2 style="border:1px solid grey;"> 
    <img src="{{cm.photo[i]}}" style="width:45px;height:45px;"> 
</ion-col> 

<ion-col col-10 style="border:1px solid grey;"> 
    {{cm}} 
</ion-col> 
</ion-row> 

写真やコンテキストデータTSに含まれている配列が

を提出しているすべてのいただきありがとうございます。

関連する問題