Как установить флажок в таблице, отмеченный по умолчанию, если есть совпадение в 2 объектах? . У меня есть 2 объекта: 1 выбран массив объектов NewUser и массив объектов transactionUserTable.data из API.
Я хочу сравнить, совпадает ли каждый адрес электронной почты в массиве объектов transactionUserTable.data с адресом электронной почты массива объектов selectedNewUser, если есть совпадение или адрес электронной почты равен, затем установите значение флажка как отмеченное.
Кто-нибудь может мне помочь, как это возможно? Если у кого есть решения или идеи. Спасибо и хорошего дня.
Сравните каждый объект selectedNewUser emailAddress с transactionUserTable.data emailAddress
#новые добавленные пользователи
selectedNewUser = [
{
"emailAddress": "aaa@gmail.com",
"firstName": "aa",
"lastName": "aa",
"phoneNumber": "232",
"companyName": "bb",
"title": "CEO",
"roleId": 7,
"associatedAccount": "WLGRN",
"accountId": 4,
"roles": [
{
"id": 12,
"name": "Architect",
"isShow": true,
"transactionRoleId": 12
},
{
"id": 11,
"name": "Construction Project Director",
"isShow": true,
"transactionRoleId": 11
}
]
},
{
"emailAddress": "bbb@gmail.com",
"firstName": "bb",
"lastName": "vv",
"phoneNumber": "34",
"companyName": "test",
"title": "CEO",
"roleId": 7,
"associatedAccount": "WLGRN",
"accountId": 4,
"roles": [
{
"id": 12,
"name": "Architect",
"isShow": true,
"transactionRoleId": 12
},
{
"id": 11,
"name": "Construction Project Director",
"isShow": true,
"transactionRoleId": 11
}
]
}
]
#html код для флажка
<div class="table" [ngStyle.gt-md]="{'overflow': 'auto'}">
<mat-table [dataSource]="transactionUserTable.dataSource" [@animateStagger]="{value:'50'}" matMultiSort
(matSortChange)="transactionUserTable.onSortEvent()">
<!-- action Column -->
<ng-container matColumnDef="action">
<mat-header-cell *matHeaderCellDef> Action - Checkbox</mat-header-cell>
<mat-cell *matCellDef="let item" fxLayoutAlign="center center">
<mat-checkbox [checked]="userSelectedStatus(item)" color="primary" [disableRipple]="true"
(change)="appendUserList($event,item)"></mat-checkbox>
</mat-cell>
</ng-container>
#Код, извлекающий список пользователей
private _transactionUserPageEvent() {
this.isTransactionUserLoading = true;
this.transactionUserTable.data = [];
this._userProfileService.getUserProfileTableDropdown(
this.accountId,
this.transactionUserTable.pageIndex + 1,
this.transactionUserTable.pageSize,
this.searchTransactionUserInput.nativeElement.value,
this.transactionUserTable.sortParams,
this.transactionUserTable.sortDirs
)
.pipe(
finalize(() => this.isTransactionUserLoading = false)
)
.subscribe({
error: err => this._notificationService.showError(err),
next: res => {
console.log("new users" , this.selectedNewUser)
this.transactionUserTable.totalElements = res.totalItemCount;
this.transactionUserTable.data = res.items as UserProfileDropdownDto[];
this.totalData = res.totalItemCount;
this.currentDisplayedData = res.lastItemOnPage;
},
complete: noop
});
}
#Пример данных списка пользователей из API (transactionUserTable.data)
[
{
"id": 90085,
"fullName": "1a 1a",
"roleDisplay": null,
"firstName": "1a",
"lastName": "1a",
"emailAddress": "aaa@gmail.com",
"phoneNumber": "fsdfsd",
"companyName": "test",
"title": "CEO",
"lastLogin": null,
"createdDate": "08/08/2021 11:20:25 pm",
"isVerified": false,
"roleDto": null,
"status": "Active",
"securityRole": "Unlicensed User",
"lastLoggedIn": "",
"teamCount": 0,
"transactionRoleList": null
},
{
"id": 90086,
"fullName": "1a 1bb",
"roleDisplay": null,
"firstName": "1a",
"lastName": "1bb",
"emailAddress": "bbb@gmail.com",
"phoneNumber": "32423",
"companyName": "dcbvc",
"title": "vsvfd",
"lastLogin": null,
"createdDate": "08/08/2021 11:25:59 pm",
"isVerified": false,
"roleDto": null,
"status": "Active",
"securityRole": "Unlicensed User",
"lastLoggedIn": "",
"teamCount": 0,
"transactionRoleList": null
},
{
"id": 90084,
"fullName": "1aaa aaa",
"roleDisplay": null,
"firstName": "1aaa",
"lastName": "aaa",
"emailAddress": "1aaa@gmail.com",
"phoneNumber": "asdas",
"companyName": "dfvdf",
"title": "CEO",
"lastLogin": null,
"createdDate": "08/08/2021 10:32:49 pm",
"isVerified": false,
"roleDto": null,
"status": "Active",
"securityRole": "Unlicensed User",
"lastLoggedIn": "",
"teamCount": 0,
"transactionRoleList": null
},
{
"id": 40108,
"fullName": "1aaaa@gmail.com 1aaaa@gmail.com",
"roleDisplay": null,
"firstName": "1aaaa@gmail.com",
"lastName": "1aaaa@gmail.com",
"emailAddress": "1aaaa@gmail.com",
"phoneNumber": "1",
"companyName": "1aaaa@gmail.com",
"title": "1aaaa@gmail.com",
"lastLogin": null,
"createdDate": "06/08/2021 1:22:50 pm",
"isVerified": false,
"roleDto": null,
"status": "Active",
"securityRole": "Unlicensed User",
"lastLoggedIn": "",
"teamCount": 0,
"transactionRoleList": null
},
{
"id": 70083,
"fullName": "23 asdasd",
"roleDisplay": null,
"firstName": "23",
"lastName": "asdasd",
"emailAddress": "asdasasdas",
"phoneNumber": "adasda",
"companyName": "asdasd",
"title": "assdasda",
"lastLogin": null,
"createdDate": "08/08/2021 7:28:05 pm",
"isVerified": false,
"roleDto": null,
"status": "Active",
"securityRole": "Unlicensed User",
"lastLoggedIn": "",
"teamCount": 0,
"transactionRoleList": null
}
]
В чем проблема, сэр, свойство «emailAddress» не существует для типа «BaseModel». ts (2339)
Я не уверен. Где используется
BaseModel.ts
и какова его структура?Как он используется в коде, который вы разместили в своем вопросе?
Я не использовал базовую модель для компонента, я не знаю, почему он называется
Вам придется отладить его, нет никакого способа ответить на этот вопрос, не глядя на код.
imgur.com/a/HqPPja8 , я думаю, потому что есть глобальный обработчик для основанной модели, который, как вы можете видеть, содержит элементы: BaseModel[];
Да, но почему он ожидает атрибут
emailAddress
вbaseModel.ts
?потому что мы пытаемся получить доступ к элементам? который находится на baseModel?
imgur.com/a/6c13ANr , это данные, когда я пытался выполнить console.log("res", res)
Но элементы имеют тип
UserProfileDropdownDto
Я также позвонил в PageModel на сервисе imgur.com/a/6c13ANr
Но на сервисе использовал pagemodel imgur.com/a/ZLWlro4
Можете ли вы как-то поделиться своим кодом? По другому действительно сложно понять.
stackblitz.com/edit/free-vicovb? Привет, пожалуйста, проверьте это, сэр
Я все еще не могу получить доступ к данным, все та же проблема
Код все еще неполный, так как я не вижу доступа ни к
PagedModel
, ни кBaseModel
в предоставленном коде.доступ к модели страницы осуществлялся через службу, если вы отметите службу getUserProfileTableDropdown
Да, сэр, но у меня есть другая проблема imgur.com/a/DiZMYjs, я получил эту ошибку на моем this.selectedNewUser
Свойство "emailAddress" не существует для типа "Object".ts(2339)
Проверьте
this.selectedNewUser
, похоже, что у него нет свойства с именемemailAddress
.imgur.com/a/MldPNP5 у него есть, сэр, это доказательство