如何在Angular2中对NgFor的结果运行函数?

丹尼斯·斯莫瑞克

考虑系统中所有用户的列表:

  allUsers = {
    a: {name:'Adam',email:'[email protected]',level:'admin',group:'Owners'},
    b: {name:'Barbra',email:'[email protected]',level:'admin',group:'Owners'},
    c: {name:'Chris',email:'[email protected]',level:'standard',group:'Managers'},
    d: {name:'Dennis',email:'[email protected]',level:'standard',group:'Managers'},
    e: {name:'Elizabeth',email:'[email protected]',level:'standard',group:'Staff'},
    f: {name:'fred',email:'[email protected]',level:'visitor',group:'Visitor'},

  }

然后是项目中的用户列表:

usersList = ['a','b','d','f'];

因此,您有一个很好的简单函数来获取用户ID并查找其余的用户详细信息:

  getUser(userId){
    console.log('Getting User with Id:', userId);
    if(allUsers[userId]) return allUsers[userId];
  }

然后在模板中使用* ngFor遍历列表中的用户,但是您想查找全部详细信息

<tr *ngFor="#userId in usersList" #user="getUser(userId)">
  <td>{{user.name}}</td>
</tr>

不起作用...没有创建自定义组件或其他更复杂的内容,我无法弄清楚如何为每个用户运行一次getUser函数。我当然可以一遍又一遍地运行它,例如:

<td>{{getUser(userId).name}}</td>

但这似乎不是最好的方法。有没有更简单的方法来访问userId变量并将其设置为局部变量?

这是到目前为止我一直在玩的东西

Pankaj Parkar

尽管您可以在ngFor模板指令上创建一个变量,但是该变量只能采用index的值,即偶数,奇数和倒数。

这就是为什么我可以在这种情况下使用管道的原因,在这种情况下,您需要将usersList传递allUsers给自定义@PipegetUsers(它与Angular1中的过滤器一样)。

标记

<tr *ngFor="let user of usersList | getUsers: allUsers">
  <td>
    {{user.name}}
  </td>
  <td>
    {{user.email}}
  </td>
  <td>
    {{user.level}}
  </td>
  <td>
    {{user.group}}
  </td>
</tr>

代码

@Pipe({
  name: 'getUsers',
  pure: false
})
export class GetUserPipe implements PipeTransform {
  constructor(){
    this.test = 'Test';
  }
  transform(array:Array<string>, object: any) : any {
    // for..in loop
    let output = [];
    for (var num in array)
    {
      // somehow object goes inner side
      output.push(object[0][array[num]]);
    }
    console.log(output)
    return output;
  }
}

Demo Plunkr

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

ngFor中的Angular2组件抛出错误(viewFactory不是函数)

来自分类Dev

Angular2:如何在angular2数据绑定中以html格式显示数据?

来自分类Dev

在Angular2中过滤NgFor

来自分类Dev

如何使用ngFor在angular2中加载多个子组件?

来自分类Dev

Ionic2 / Angular2 / TypeScript:如何在函数2016中访问DOM元素

来自分类Dev

如何在angular2中每2分钟调用一次函数?

来自分类Dev

如何在Angular2中包含npm中的CSS

来自分类Dev

如何在Angular2中使用* ngFor动态生成ngModel?

来自分类Dev

Angular2:ngfor如何扩展

来自分类Dev

如何在Angular 2中的ngFor中设置绑定?

来自分类Dev

如何在Angular的HTML中返回函数的结果?

来自分类Dev

如何在Angular中的回调函数之后运行代码?

来自分类Dev

如何使用多个ngFor解析angular2中的json文件?

来自分类Dev

ngfor中的angular2形式

来自分类Dev

如何在angular2 formControl中使用ngFor

来自分类Dev

渲染完所有组件后,如何在Angular2中运行TypeScript代码?

来自分类Dev

无法在ngFor Angular2内部的元素上调用函数

来自分类Dev

如何在Angular2的ngFor指令中缓存值?

来自分类Dev

Angular2中的分组元素* ngFor

来自分类Dev

如何在Angular2中使用* ngFor将超链接添加到表的列

来自分类Dev

Angular2 如何从 ngFor 中只获取一个值

来自分类Dev

如何仅在用户在 ngFor Angular2 中单击的元素上显示错误消息

来自分类Dev

在 Angular2 中对 *ngFor 的承诺

来自分类Dev

Angular 2 如何在填充数组后运行函数

来自分类Dev

如何在函数级别获取 JSON 并在 Angular2 中的 HTML 页面上显示

来自分类Dev

如何在 angular2/4 中未调用的函数中引用组件的变量?

来自分类Dev

如何在 Angular 中按顺序运行异步函数?

来自分类Dev

Angular2 如何在 *ngFor 中添加两个值

来自分类Dev

如何在 ngFor 结果中搜索?

Related 相关文章

  1. 1

    ngFor中的Angular2组件抛出错误(viewFactory不是函数)

  2. 2

    Angular2:如何在angular2数据绑定中以html格式显示数据?

  3. 3

    在Angular2中过滤NgFor

  4. 4

    如何使用ngFor在angular2中加载多个子组件?

  5. 5

    Ionic2 / Angular2 / TypeScript:如何在函数2016中访问DOM元素

  6. 6

    如何在angular2中每2分钟调用一次函数?

  7. 7

    如何在Angular2中包含npm中的CSS

  8. 8

    如何在Angular2中使用* ngFor动态生成ngModel?

  9. 9

    Angular2:ngfor如何扩展

  10. 10

    如何在Angular 2中的ngFor中设置绑定?

  11. 11

    如何在Angular的HTML中返回函数的结果?

  12. 12

    如何在Angular中的回调函数之后运行代码?

  13. 13

    如何使用多个ngFor解析angular2中的json文件?

  14. 14

    ngfor中的angular2形式

  15. 15

    如何在angular2 formControl中使用ngFor

  16. 16

    渲染完所有组件后,如何在Angular2中运行TypeScript代码?

  17. 17

    无法在ngFor Angular2内部的元素上调用函数

  18. 18

    如何在Angular2的ngFor指令中缓存值?

  19. 19

    Angular2中的分组元素* ngFor

  20. 20

    如何在Angular2中使用* ngFor将超链接添加到表的列

  21. 21

    Angular2 如何从 ngFor 中只获取一个值

  22. 22

    如何仅在用户在 ngFor Angular2 中单击的元素上显示错误消息

  23. 23

    在 Angular2 中对 *ngFor 的承诺

  24. 24

    Angular 2 如何在填充数组后运行函数

  25. 25

    如何在函数级别获取 JSON 并在 Angular2 中的 HTML 页面上显示

  26. 26

    如何在 angular2/4 中未调用的函数中引用组件的变量?

  27. 27

    如何在 Angular 中按顺序运行异步函数?

  28. 28

    Angular2 如何在 *ngFor 中添加两个值

  29. 29

    如何在 ngFor 结果中搜索?

热门标签

归档