我正在使用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}`)
答案 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
的对象的全新副本,而无需修改您的原始响应。