Angular 有没有办法在ng中搜索

Angular 有没有办法在ng中搜索,angular,Angular,我有两个数组文件和currentlyRunning。 假设文件位于索引0中,其进度在currentlyRunning[1]内。进度即索引1 我正在运行ngFor以显示所有文件。td中的ngIf是否可以获取正确的进度,因为索引可能不同,但文件id是唯一的 <tr *ngFor="let files of File; let index=i;"> <td> {{file.name}} </td> <td> {{file.id

我有两个数组文件和currentlyRunning。 假设文件位于索引0中,其进度在
currentlyRunning[1]内。进度
即索引1
我正在运行
ngFor
以显示所有文件。td中的
ngIf
是否可以获取正确的进度,因为索引可能不同,但文件id是唯一的

<tr *ngFor="let files of File; let index=i;">
  <td>
    {{file.name}}
  </td>
  <td>
    {{file.id}}
  </td>
  <td *ngIf="file.id === currentlyRunning[i].id">
    {{currentlyRunning.progress}}
  </td>
<tr>

{{file.name}
{{file.id}
{{currentlyRunning.progress}

您可以在组件类中创建函数并在ngIf指令语句中使用它

您可以在组件类中创建函数并在ngIf指令语句中使用它

否则,我建议您应该将数据相互映射

ngOnChages() {
  this.mapedData = currentlyRunning.reduce((map, file) => {
    map[file.id] = file;
    return map;
  }, {} as { [id: number]: iFile });
}
然后,您可以在模板中使用简单的查找:

<tr *ngFor="let file of files; let index=i;">
  <td>
    {{file.name}}
  </td>
  <td>
    {{file.id}}
  </td>
  <td *ngIf="mapedData[file.id] as currentlyRunning">
    {{currentlyRunning.progress}}
  </td>
<tr>

{{file.name}
{{file.id}
{{currentlyRunning.progress}

通过这种方式,它只是O(n)复杂度,您有一种很好的方法来处理所有这些数据

我建议,否则,您应该将数据相互映射

ngOnChages() {
  this.mapedData = currentlyRunning.reduce((map, file) => {
    map[file.id] = file;
    return map;
  }, {} as { [id: number]: iFile });
}
然后,您可以在模板中使用简单的查找:

<tr *ngFor="let file of files; let index=i;">
  <td>
    {{file.name}}
  </td>
  <td>
    {{file.id}}
  </td>
  <td *ngIf="mapedData[file.id] as currentlyRunning">
    {{currentlyRunning.progress}}
  </td>
<tr>

{{file.name}
{{file.id}
{{currentlyRunning.progress}

这样,它只是O(n)复杂度,您有一个很好的方法来处理所有这些问题

最好创建一个字典/索引器,并以这种方式检索它。这将更具可读性,也更具性能。另请参见,查找将使用
currentlyRunning
。最好创建一个字典/索引器,并以这种方式检索它。这将更具可读性,也更具性能。另请参见
currentlyRunning
将是查找。