Я пытаюсь использовать .splice
, чтобы удалить элемент из массива в Angular.
Массив на самом деле BehaviourSubject
, так что в других компонентах я могу наблюдать за изменениями и отражать их через приложение.
У меня есть метод, который в настоящее время получает всех пользователей из субъекта поведения ...
getUsers(): UIUser[] {
return this.users$.getValue();
}
Как видите, он буквально просто возвращает значение субъекта поведения в данный момент времени.
Я думал, что изначально проблема заключалась в том, что, возможно, метод getUsers
меняется еще до того, как я по какой-то причине завершил его, поэтому я его клонировал, и я все еще получаю тот же результат, который является неправильным элементом. удален.
У меня есть метод
deleteUser(deletedUser: User): void {
const users: User[] = this.getUsers();
const index: number = users.findIndex(user => {
return user.id === deletedUser.id;
});
this.setUsers(users.splice(index, 1));
}
Это по какой-то причине удаляет неправильный элемент из массива.
Метод setUsers
просто делает это:
setUsers(Users: User[]): void {
this.users$.next(users);
}
Пример данных:
[
{
id: 1,
name: 'John Doe'
},
{
id: 2,
name: 'Jane Doe'
}
]
Если я позвоню deleteUser(user)
с пользователем, ссылающимся на John Doe
, результат будет:
[
{
id: 1,
name: 'John Doe'
}
]
В то время как все должно быть наоборот, Джон Доу должен быть удален, а Джейн Доу должна остаться.