Выбор данных и отображение в асинхронном угловом 12

#arrays #angular #asynchronous

#массивы #angular #асинхронный

Вопрос:

Я получил список пользователей, которые я получаю от службы.

 persons: Array<any> = [
{"id": 1, "name": "test1", "key": "value"}, 
{"id": 2, "name": "test2", "key": "value"}, 
{"id": 3, "name": "test3", "key": "value"},
{"id": 4, "name": "test4", "key": "value"},
{"id": 5, "name": "test5", "key": "value"}
....
]
 

Я создаю таблицу в своем html следующим образом:

 <div *ngFor="let person of persons; let i = index">
<p>{{person.id}}</p>
<p>{{person.name}}</p>
<p>{{person.key}}</p>
<button (click)="onSelect(person)">Select</button>
</div>
 

Все это работает идеально

Теперь я хочу, чтобы пользователь мог выбирать нужных ему людей и добавлять их в новый список / таблицу, которые будут отображаться асинхронно в верхней части страницы, а также дать ему возможность удалить человека из этого списка, если он захочет.

Для этого мне, вероятно, нужен второй массив (ReplaySubject? ), на который я должен подписаться и отобразить его в DOM, например

 <div *ngIf="new Array / ReplaySubject is length is > 0" *ngFor="let person of selectedPersons; let i = index">
<p>{{person.id}}</p>
<p>{{person.name}}</p>
<p>{{person.key}}</p>
<button (click)="removePerson(person)">X</button>
</div>
 

Но как именно я могу этого добиться?
Я создал ReplaySubject, подписался на него в ngOnInit и при вызове функции onSelect(value) я делаю это.ReplaySubject.emit(value) но я не знаю, как прочитать значения этого ReplaySubject.

В конце я хочу отправить все данные, которые включены в новый массив / тему выбранных лиц. Вот так:

 <button type="button" (click)="onSubmit()">Submit</button>

--

onSubmit() {
// Data from the new Array / Subject
}
 

Может быть, это неправильный подход? Есть ли какие-либо предложения?

Комментарии:

1. для этого необходимо использовать асинхронный канал, вот документация по асинхронному каналу angular.io/api/common/AsyncPipe