向地图的可观察对象添加值

时间:2018-07-17 23:10:30

标签: angular rxjs observable angular-httpclient rxjs6

我正在使用Angular 6,HttpClient和Rxjs6。我正在尝试使用地图添加属性,但得到Property 'id' does not exist on type 'Object'

public onSelectName = $event => {
    this.nameTable$ = this.apiNamesService
        .getNamesById($event.item.id)
        .pipe(map(res => (res.id = $event.item.id)));
};

res.id引起了问题。我尝试过转换为任何会给我另一个错误Cannot find name 'res'

的错误

apiNamesService看起来像这样:

public getNamesById = id => this.http.get(`/api/etc/${id}`)

2 个答案:

答案 0 :(得分:0)

尝试通过数组运算符和字符串分配值。

res['id'] = $event.item.id

这会在编译时绕过TypeScript属性检查。

答案 1 :(得分:0)

如果您不关心对象的类型,则可以简单地使用Object.assign()

 public onSelectName = $event => {
        this.nameTable$ = this.apiNamesService
            .getNamesById($event.item.id)
            .pipe(map(res => Object.assign({id: $event.item.id}, res)));
    };

这将创建具有新属性id的对象的全新副本,而无需修改您的原始响应。