角度2 /离子2 - 用于ts中的循环

时间:2017-07-23 13:55:59

标签: javascript angular typescript ngfor

我想将index分配给content,以便根据index将标记添加到标记。

console.log(storeData.length)将返回4行数据。

现在,两种方法都返回相同的结果,4 infowindow相互叠加。我似乎有很多examples,但我不知道如何实现我的代码。特别是var marker,i;

TS

for ( let infowindowData of storeData){

  let content = '<ion-item>' + 
     '<h2 style="color:red;">' + infowindowData.ListingTitle +'</h2>' + 
     '<p>' + infowindowData.ListingDatePosted + ' ' + infowindowData.ListingTime + '</p>' +
     '</ion-item>';    

     this.addInfoWindow(marker, content);

}    

我尝试了什么

 let storeData =  this.data;

 for(let i=0; i<storeData.length;i++){

 let content = '<ion-item>' + 
     '<h2 style="color:red;">' + storeData[i].ListingTitle +'</h2>' + 
     '<p>' + storeData[i].ListingDatePosted  + ' ' + storeData[i].ListingTime  + '</p>' +
     '<p> Salary: $' + storeData[i].ListingSalary  + '</p>' +
     '</ion-item>';    


 let infoWindow = new google.maps.InfoWindow({
 content: content
 });

 google.maps.event.addListener(marker, 'click', () => {
 infoWindow.open(this.map, marker);
 });

 }

1 个答案:

答案 0 :(得分:2)

你好为什么在ts中混合html?也许你有一个特定的理由这样做,但我不认为这是你想要有角度的方式。我更喜欢这种方式,通过在具有可重用和可测试的输入参数的组件中定义html。我只是把裸代码。如果您需要其他帮助,可以询问。

按如下方式创建组件:

import { Component, OnInit, Input } from '@angular/core';

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

  @Input('title') listingTitle :string;
  @Input('date') datePosted :string;
  @Input('time') listingTime :string;
  constructor() { }

  ngOnInit() {
  }

}

相应的html如下:

<ion-item> 
     <h2 style="color:red;">{{listingTitle}}</h2> 
     <p>{{datePosted}} {{listingTime}}</p>
</ion-item>

然后在您需要使用上述组件的其他组件中。见下面的TS // guess storedata是一个数组

private storeData: infowindowData[];

您的模板可以如下。您可以决定如何处理索引。您可以在组件中创建其他输入参数并将其传递给那里。该组件的任何其他逻辑也可以在OnInit中完成。

<li *ngFor="let infoWindow of storeData; let index = index">
  <info-window [title]=infoWindow.ListingTitle
[date]=infoWindow.ListingDatePosted [time]=infoWindow.ListingTime></info-window>
</li>

希望有所帮助。 阿什利