Скажем, у меня есть наблюдаемая с именем selectedUsers$
, которая возвращает наблюдаемую матрицу в следующем формате.
[
{
'userId': 'someId',
'other': 'properties',
'that': 'dont',
'matter': '.',
},
{
'userId': 'anotherId',
'other': 'properties',
'that': 'dont',
'matter': '.',
},
{
'userId': 'yetAnotherId',
'other': 'properties',
'that': 'dont',
'matter': '.',
},
];
Я хочу отфильтровать этот массив на основе того, является ли пользователь администратором или нет для модуля, и собирать только те, которые не являются администраторами.Чтобы узнать, является ли пользователь администратором модуля, необходимо выполнить вызов другой функции, которая принимает значения moduleName
и userId
и возвращает значение true или false в качестве наблюдаемого.
Подпись для функции:
isUserAdministratorForModule$(moduleName: string, userId: string): Observable<boolean>
Я хочу создать функцию
getNonAdministratorUsersForModule$(moduleName: string): Observable<IUser[]> {
return this.selectedUsers$.map(selectedUsers => selectedUsers.map(user =>
user.id)
.filter(userId => !this.userService.isUserAdministratorForModule$(moduleName, userId))
}
Это то, что я придумал.Это неправильно, но я написал это, чтобы вы поняли лучше.Проблема в том, что фильтр является методом массива, и функция внутри него возвращает Observable логического типа.
Есть какие-нибудь идеи о том, как отфильтровать Observable, который возвращает массив, и переданная функция в фильтре возвращает Observable, равное true или false, на основе значения объекта в массиве?
Спасибо