Это сложно диагностировать, поскольку у меня нет полного решения, приведенный ниже анализ будет основан на некоторых предположениях с моей стороны, пожалуйста, исправьте меня, если ошиблись.
Ваша логика карты создает здесь неизменную копию индивидуального индекса.
this.airports = [...this.airports, this.airports[index] = airport];
Вывод этого затем объединяется здесь.
merge(newAirport$, updateAirport$, uploadCSV$)
Если логика в this.updateAirportSubject$
основана на копии newAirport$
, вы помещаете неизменную копию обратно в себя ... если это так, удалите исходный индекс из newAirport$
перед объединением или измените оригинал без создания неизменной копии.
Редакция
Глядя на это поближе, я считаю, что эта логика является причиной вашей проблемы, мне не совсем ясно, чего вы пытаетесь достичь в этой строке.
Вы создаете неизменную копию this.airports
и добавляете
копия индекса на конце.
this.airports = [...this.airports, this.airports[index] = airport];
Вы уже получили индекс здесь, используя airport.id
const index = this.airports.findIndex(item => item.id === airport.id);
А затем используйте индекс, чтобы выполнить логическое сопоставление в аэропорту, чтобы убедиться, что индекс соответствует выданному значению, а затем добавьте в конец this.airports
.
this.airports[index] = airport
Пример * ** 1 038 тысяча тридцать семь *
логика ниже
array = [1,2,3,4,5,6,7,8,9]
index;
ngOnInit(){
this.index = this.array.indexOf(4);
this.array = [...this.array, this.array[this.index] = 4];
console.log(this.array);
}
приводит к этому выводу.
1,2,3,4,5,6,7,8,9,4