首页 > 解决方案 > 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 => {
        });

标签: angularionic4

解决方案


好的。我认为您的问题是创建了参考。

在 JavaScript 中,不可能有从一个变量到另一个变量的引用。

this.venues = imm

所以在这种情况下,this.venues 将是对 imm 的引用,即每当 this.venues 更改时,imm 也会更改。

所以尝试创建对象的副本。

一种创建对象副本的方法

JSON.parse(JSON.stringify(object))

推荐阅读