【问题标题】:Angular filter data with select menu带有选择菜单的角度过滤器数据
【发布时间】:2018-08-14 18:24:09
【问题描述】:

我想使用选择菜单过滤数据表。我已经填充并且我有一个管道,虽然我一定做错了,当我从下拉列表中选择一些东西时,它只会清空组件 html 生成的数据表。

<div>
<select [(ngModel)]="selectOpt" name="selectOpt" class="password-sort-select" >
<option>Select Team</option>
<option *ngFor="let team of teams" [ngValue]="team.team_id">{{team.team_name}}</option>
</select>
</div>

<ul class="company-display-data data-table passwords">
<li *ngFor="let password of passwords | filter: selectOpt" class="cf">
<a class="team-badge-wrapper" href="#"><span class="team-badge">{{password.team_name}}</span></a>
<span class="team-display-data team-description">{{password.description}}</span>
<span class="team-display-data team-url">{{password.url}}</span>
<span class="team-display-data team-username">{{password.username}}</span>
<span class="team-display-data team-password">{{password.password}}</span>
<a class="team-edit" routerLink="/detail/{{password.id}}"><span class="display-data">Edit</span></a>

</li>
</ul>
import { Pipe, PipeTransform } from '@angular/core';

@Pipe({
name: 'filter'
})

export class FilterPipe implements PipeTransform {

transform(items: any, selectOpt?: any): any {
return selectOpt ? items.filter(opt => opt.password_id === selectOpt) : items;
}
}

我做错了什么?

【问题讨论】:

  • 管道是否接收到正确的 selectOpt 值?您可以使用管道中的控制台日志进行检查。
  • 除了导入数据的三个服务的 JSON 之外,控制台中没有任何记录。
  • 我看到您按“password.password_id”字段过滤,但在您的模板中您提到了“password.id”字段。您是否在此对象上有两个字段,或者这只是一个错字(因此是您的问题的原因)?
  • 您好 Anton,这是一个错字,但修复它并没有解决问题。感谢您指出!

标签: angular angular-pipe


【解决方案1】:

当您选择一个值时,您的管道返回一个空数组

return selectOpt ? items.filter(opt => opt.password_id === selectOpt) : items;

请将 opt.password_id 与密码模型匹配

选择“选择团队”

return (selectOpt && selectOpt != 'Select Team') ? items.filter(opt => password_id === selectOpt) : items;

工作示例https://stackblitz.com/edit/angular-rb5vmu

【讨论】:

  • 别在意最后一条评论,我搞定了,感谢您的帮助。
  • 是否有正确的方法可以让选择在您单击之前不为空?我见过一些解决方案,但它们似乎很老套。
猜你喜欢
  • 2019-03-09
  • 1970-01-01
  • 2012-09-15
  • 2019-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-29
相关资源
最近更新 更多