Получение значения Id из одной службы на основе Id из другой службы - PullRequest
0 голосов
/ 07 августа 2020

Я пишу приложение angular, которое извлекает задания, которые включают имя клиента. Сохраняя данные в таблице вакансий, я сохраняю идентификатор клиента. Следовательно, JobModel содержит CustomerId.

В моем angular рабочем компоненте я ввожу службу поддержки клиентов и вакансий. Мне нужно получить имя клиента из службы поддержки на основе CustomerId, возвращаемого службой Jobservice.

Как мне этого добиться?

Компонент

constructor(
    private customerService: CustomerService,
    private jobService: JobService) { }

  ngOnInit() {
    this.customerService.GetCustomers().subscribe(customers => this.customers = customers);
    this.jobService.GetJobs().subscribe(jobs => this.jobs = jobs);
  }

Html

<h2>Jobs list</h2>
<table spacing="0">
  <thead>
    <tr>
      <th>Customer</th>
      <th>When</th>
      <th></th>
    </tr>
  </thead>
  <tbody>
    <tr *ngFor="let job of jobs">
      <td>{{job.customer}}</td>
      <td>{{job.when | date:'shortDate'}}</td>
      <td>
        <a [routerLink]="['/job', job.jobId]">Open</a>
      </td>
    </tr>
  </tbody>
</table>

Модель

export interface JobModel {
  jobId: number;
   customerId: number;
  when: Date;
}

Заказчик

export interface CustomerModel {
  customerId: number;
  name: string;
  type: string;
}

1 Ответ

0 голосов
/ 07 августа 2020

Я полагаю, вы хотите, чтобы имя заказчика было на работе. Я бы попробовал что-то вроде этого:

this.jobs.forEach((job) => {
  job.customerName = this.customers.find((customer) => customer.customerId === job.customerId).name;
});

Edit: с zip от rx js:

import { zip } from 'rxjs';
...
zip(this.customerService.GetCustomers(), this.jobService.GetJobs()).subscribe([customers, jobs] => {
    this.customers = customers;
    this.jobs = jobs;
    this.jobs.forEach((job) => {
      job.customerName = this.customers.find((customer) => customer.customerId === job.customerId).name;
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...