gpt4 book ai didi

javascript - 如何使用 RxJS 设置 map 中不包含的值?

转载 作者:行者123 更新时间:2023-11-30 11:29:52 25 4
gpt4 key购买 nike

我刚刚开始使用 Angular 4,并且我一直在从事一个项目,该项目涉及显示使用 REST API 检索的数据。数据似乎得到了正确的检索,并且表格得到了正确的填充。

现在,从 API 返回的值之一只包含一个字符。我希望覆盖 setter 方法以将该单个字符扩展为完整字符串。我知道我可以更改调用以返回完整的字符串,但是该 API 受多个前端支持,我希望保持它们的一致性。这个 plunker 应该是我希望做的(不涉及 REST API):Plunker example

登录我的项目订阅功能时,没有包含fullStatus:

this.service.get(id).subscribe(p => { 
this.test = p;
console.log(this.test);
});

在此处添加 switch 语句时,一切正常,但我希望将此逻辑捆绑到 Test 类而不是订阅函数中。

this.service.get(id).subscribe(p => {
this.test = p;
switch (this.test.status) {
case 'A':
this.test.fullStatus = 'Active';
break;
case 'I':
this.test.fullStatus = 'Inactive';
break;
case 'N':
this.test.fullStatus = 'No Certificate';
break;
default:
this.test.fullStatus = '';
break;
}
console.log(this.test);
});

我有更好的方法来处理这个问题吗?提前致谢。

最佳答案

你不能在 api 调用之后对你的结果做一个 map 来包含这个 fullStatus 属性吗?

为您服务,

// assuming you have to convert the response to json
get(id) {
return this.http.get(<url-to-get>).map((res) => {
let test = res.json();
switch (this.test.status) {
case 'A':
test['fullStatus'] = 'Active';
break;
case 'I':
test['fullStatus'] = 'Inactive';
break;
case 'N':
test['fullStatus'] = 'No Certificate';
break;
default:
test['fullStatus'] = '';
break;
}

return test; // returns each response element with the new property 'fullStatus' added based on its 'status'
});
}

然后你可以简单地在你的组件类中订阅它。希望对您有所帮助。

关于javascript - 如何使用 RxJS 设置 map 中不包含的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46649699/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com