Мне нужно добавить элемент управления для типа массива моей формы, но мне нужно получить возвращаемое значение Observable, прежде чем отобразить значения, а затем добавить его в форму.
В приведенном ниже коде вставляется элемент управления пустого массива, даже если наблюдаемое значение отсутствует.
Мне нужно убедиться, что перед добавлением элемента управления в рамках подписки были возвращены все наблюдаемые данные.
Для этого нужно вставить пустое значение, мне нужно получить последнее значение, возвращаемое внутри подписки, а затем вставить элемент управления с количеством возвращенных пользователей.
В моем HTML мне нужно отобразить флажок с именем пользователя и тем, отмечены ли они или нет в массиве, идентификатором пользователя и логическим значением для каждого.
component.ts
users$ = this._store.select(usersSelectors.getUsers);
this.myForm = this._formBuilder.group({
// .... controls
});
this.users$.pipe(
filter((data) => !!data),
map(users => this._formBuilder.array(users.map(() => new FormControl(false))))
).subscribe(usersArray =>
this.myForm.addControl('users', usersArray)
);
component.html
<div class="col-md-3">
<label for="users">Users</label>
<div id="users" class="row">
<div class="checkbox" class="col-sm-4"
formArrayName="users"
*ngFor="let item of myForm.get('users').controls; let i = index" >
<label class="checkbox-inline">
<input type="checkbox" [formControlName]="i"> {{ users$[i].name }}
</label>
</div>
возврат от пользователей $:
0: {subscriber: false, avatar: "", name: "Paul", id: "eXrrdOfmUGYHFIOVCWjBnAO7PZ52" …}
1: {subscriber: true, avatar: "", name: "Will", id: "NoQMVGnCA6VPc42ksIa6AqZZNWL2" …}
При маркировке пользователя пользовательский контроль должен выглядеть следующим образом.
users: [
{eXrrdOfmUGYHFIOVCWjBnAO7PZ52: false}
{NoQMVGnCA6VPc42ksIa6AqZZNWL2: true}
]