如何使用ngFor在动态数组中循环?

时间:2017-11-06 15:00:00

标签: typescript angular2-template angular-material2

我正在尝试将动态数组绑定到md-option。但这是在抛出错误。

                    <md-select id="hospital0{{index}}" placeholder="Hospital" style="width:100%; " name="hospital">
                      <md-option *ngFor="let hospital of hospitalList{{index}}" [value]="hospital.id">{{ hospital.name }}</md-option>
                    </md-select>

我尝试了另一种方法。在那里我获取选择元素,然后添加选项。但它没有在md-option中添加选项。 我试过这个

    public async GetHospitalForCity(cityId: any) {
console.log(cityId);
let ddl = (<HTMLSelectElement>document.getElementById("hospital000"));
let option = document.createElement("option");
option.value = "1";
option.text = "Hospital1";
ddl.appendChild(option);

}

3 个答案:

答案 0 :(得分:1)

尽管该帖子很旧,但我添加了一个类似的问题,以上解决方案都无法解决我的问题。 但最终我找到了以下解决方案。

我们可以在ts中有一个函数,该函数返回索引上的数组并将其绑定到模板中,如下所示:

HTML:

*ngFor="let hospital of getArray(i+1); let i=index"

ts:

getArray(i: number): any[] {
  if (i === 1) {
     return this.hospital1;
  }else {
     return this.hospital2;
  }
}

答案 1 :(得分:0)

async pipe内的数组是异步时,您使用内置角度的<md-option *ngFor="let hospital of hospitalList{{index}} | async" [value]="hospital.id"> {{ hospital.name }} </md-option>

实施例

<?php

echo "<form method='POST' action='index.php'><br>
    <p>Would you Like to create your Account with Details Information<b>?
</b>
                <br><br> 
                <input type='submit' id='yes' name='yes' value='yes'/></p>
                &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  
                <input type='submit' id='no' name='no' value='No'/></p>
</form>";

        if ($_SERVER['REQUEST_METHOD'] === 'POST') {
        if (isset($_POST['yes'])) {
         echo "<br><br><p> Yes clicked!!!</p>";
         } else if (isset($_POST['no'])) {
         echo "<br><br><p> You have successfully Registered!!!</p>";
             }
        }

?>

答案 2 :(得分:0)

我使用以下方法解决了我的问题:

ngFor="let hospital of hospitalList[index]"
正如Elvynia在评论中所说的那样。