如何将整个对象从NgFor传递到组件控制器

时间:2019-02-17 19:49:06

标签: javascript angular angular6

我有一个使用选择选项的表格。该组件用于添加作业,您可以选择一个包含客户端名称,地址,电话和传真的客户端(您可以从“客户端”页面添加这些内容),也可以手动将其添加到特定作业中。

当列表中有“客户端”时,您可以选择客户端,它将自动填写客户端电话,传真和地址,但是我不知道如何将整个客户端从NgFor传递回控制器。到目前为止,我试图将选项放入NgModel并在Select Change上找到与该ngModel值相等的数组中的正确客户端,但是我确定有更好的方法呢?

<select *ngIf="!manualClient" name="clientName" (change)="fillClientValues()" id="clientNameSelect" formControlName="clientName" class="form-control">
    <option *ngFor="let client of allClients" [(ngModel)]="selectedClient" value="{{client.name}}">{{client.name}}</option>
</select>

如果我可以从ngFor传递客户端,那就容易多了。

1 个答案:

答案 0 :(得分:0)

您有两个选择:

1。

<select *ngIf="!manualClient" name="clientName" (change)="fillClientValues();onClick($event)" id="clientNameSelect" formControlName="clientName" class="form-control">
    <option *ngFor="let client of allClients; let i = index;" value="i">{{client.name}}</option>
</select>

2。

<select *ngIf="!manualClient" name="clientName" (change)="fillClientValues($event)" id="clientNameSelect" formControlName="clientName" class="form-control">
    <option *ngFor="let client of allClients; let i = index;" value="i">{{client.name}}</option>
</select>

您可以从事件对象中提取索引。我建议第二种选择是更好的选择。以我的经验,从模板调用函数非常昂贵。

欢呼