Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 角度Http订阅响应值也会更改_Angular_Ionic4 - Fatal编程技术网

Angular 角度Http订阅响应值也会更改

Angular 角度Http订阅响应值也会更改,angular,ionic4,Angular,Ionic4,我正在申请Angular Ionic项目的api。我将传入的数据传输到两个相同的变量。但当我过滤时,主要参数“response”也会改变 当我希望“response”保持不变时,我希望对不同的参数使用不同的过滤器。请帮帮我 // venues: Venue kahvaltiMekani: Venue // var searchVenuesSubscribe = this.searchVenueService.searchVenues(String(jsonParse.git

我正在申请Angular Ionic项目的api。我将传入的数据传输到两个相同的变量。但当我过滤时,主要参数“response”也会改变

当我希望“response”保持不变时,我希望对不同的参数使用不同的过滤器。请帮帮我

//  
    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.vinces将是对imm的引用,即每当this.vinces更改时,imm也会更改

因此,请尝试创建对象的副本

创建对象副本的方法

JSON.parse(JSON.stringify(object))

谢谢你的回答。但我的问题还没有解决。我的问题是“反应”正在改变。我并没有对他做任何事。有趣的是,“反应”正在改变。以上代码中的“响应”为“imm”。更新了答案。看看这能不能解决你的问题你很棒。你救了我一天。