在ng2中写这个打字稿lambda的有效方法吗?

时间:2017-08-28 21:05:26

标签: angular typescript

我有一个ng2组件,它调用服务来获取搜索元数据。所以我在ng2组件上有一个名为searchMetadata的成员变量。结果集如下所示:

var searchMetadata = 
{
   Authors = Author[],
   Titles = Title[]  
}

Author对象有一组完全定义的属性,它描述了一个像FirstName,LastName等的Author。我正在使用一个select控件,它需要一个带有{id:123,text:'John Smith'等对象的绑定数据集。 }。所以我需要在组件上定义一个authors成员变量,并使用lambda将searchMetadata.Authors转换为预期的结构。以下是一些hacky代码,模糊地展示了如何使用C#lambda:

this.authors = this.searchMetadata.Select(
    x => new {id:x.Id, text:x.FirstName + ' ' + x.LastName});

在ng2中写这种类型的lambda的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

尝试使用地图运算符:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map

this.authors = this.searchMetadata.Authors.map(
        x => ( {id:x.Id, text:x.FirstName + ' ' + x.LastName});

map运算符允许您从一种类型“映射”到另一种类型。

困难的部分是使语法正确,因为使用{}暗示它是一个多行lambda ...这不是我们拍摄的。

只是将括号括在匿名类型旁边似乎可以解决问题。