angular - Angular Http 订阅响应值也发生了变化
问题描述
我正在为 Angular Ionic 项目申请一个 api。我将传入的数据传输到两个相同的变量。但是当我过滤时,主要参数“响应”也会发生变化。
当我希望“响应”保持不变时,我希望对不同的参数使用不同的过滤器。请帮我。
//
venues: Venue
kahvaltiMekani: Venue
//
var searchVenuesSubscribe = this.searchVenueService.searchVenues(String(jsonParse.gitmeSebebi.join(",")).replace(" ", "+"), String(jsonParse.latLng));
searchVenuesSubscribe.pipe(map(imm=>{
this.venues = imm
this.venues.response.venues = this.venues.response.venues.filter((thing, i, arr) => {
return arr.indexOf(arr.find(t => t.name === thing.name)) === i;
});
this.venues.response.venues.forEach(item => {
try {
this.distanceMatrix(jsonParse.lat, jsonParse.lng, item.location.lat, item.location.lng, item);
}
catch{ }
});
this.kahvaltiMekani = imm;
this.kahvaltiMekani.response.venues = this.kahvaltiMekani.response.venues.filter(a => a.categories.find(b => b.id === "4bf58dd8d48988d179941735"
|| b.id === "4bf58dd8d48988d16a941735" || b.id === "52e81612bcbc57f1066b79f1" || b.id === "4bf58dd8d48988d143941735" || b.id === "52e81612bcbc57f1066b7a0c" || b.id === "4bf58dd8d48988d16d941735") !== undefined)
.slice(0, 1);
})).subscribe(response => {
});
解决方案
好的。我认为您的问题是创建了参考。
在 JavaScript 中,不可能有从一个变量到另一个变量的引用。
this.venues = imm
所以在这种情况下,this.venues 将是对 imm 的引用,即每当 this.venues 更改时,imm 也会更改。
所以尝试创建对象的副本。
一种创建对象副本的方法
JSON.parse(JSON.stringify(object))
推荐阅读
- c# - 添加 Timeline.DesiredFrameRate 后,故事板动画无法在 WPF 中暂停
- sql - 如何从eclipse氧气连接sql server 2017
- ios - 合并冲突核心数据
- javascript - 为什么在向根工作区 package.json 添加依赖项时纱线会发出警告
- apache-kafka-streams - 将 kafka-streams 表存储在数据存储中
- java - 如何在 jGit 中使用 fetch 命令?
- javascript - Vue.js:vuex 操作中未捕获的承诺
- wpf - WPF:如何在有条件的情况下将图像/图标添加到我的菜单
- r - Shuffle characters within string R
- java - 当我有 int answer = in.nextInt(); 在第 8 行什么都没有出现,但是当我把它放在第 13 行时,出现了什么?