Angular2如何将* ngFor迭代项传递给管道作为参数?

时间:2017-04-05 06:12:33

标签: angular angular-pipe

假设我有以下代码:

<a *ngFor="let sterm; of data?.search_term | getOtherSearchTerms: sterm" href="job_search_results.do?jkw=">{{sterm}}</a>

这是我的烟斗:

import { Pipe, PipeTransform } from '@angular/core';

@Pipe({
  name: 'getOtherSearchTerms'
})

export class SearchTermPipe implements PipeTransform {
  otherSearchTerms;

  transform(searchTermArray: Array<any>, currentTerm: any): any {
    console.log(searchTermArray);
    console.log(currentTerm);
    return searchTermArray;
  }
}

,日志如下:enter image description here

如您所见sterm未传递给管道。

注意:这里使用管道的主要目的是获取除当前值之外的所有其他数组元素(例如在第一个循环中我希望获取除Software之外的所有其他单词,并且在第二个循环中除了Engineering之外的其他词语以及其他的相同内容。)

注意:sterm在第一次迭代时应为Software,在第二次迭代时应为Engineering

我想创造一些像这样的想法:

想要为数组中的每个关键字创建<a>标记,但将所有其他字词作为查询字符串传递给a标记。例如:

<a href="job_search_results.do?jkw=engineering+keyword2">Software</a>
<a href="job_search_results.do?jkw=software+keyword2">Engineering</a>
<a href="job_search_results.do?jkw=software+engineering">Keyword2</a>

2 个答案:

答案 0 :(得分:2)

如果您想使用管道修改单个项目,这应该是您想要的:

<ng-container *ngFor="let sterm of data?.search_term">
  <a href="job_search_results.do?jkw=">{{sterm | getOtherSearchTerms}}</a>
</ng-container>

答案 1 :(得分:0)

这样做:

 <ng-container *ngFor="let sterm of data?.search_term">
   <a [href]="sterm | getOtherSearchTerms:data?.search_term">{{ sterm }}</a>
 </ng-container>

并将pipe更改为:

transform(currentTerm: any, searchTermArray: Array<any>): any {
   return 'job_search_results.do?jkw='+searchTermArray;
}