Получить связанный объект на основе его идентификатора - PullRequest
0 голосов
/ 28 апреля 2018

У меня есть textbox для клиентов для поиска id:

Enter Id: <input type="text" [(ngModel)]="temp.id"> 
<button (click)="myEvent()">My Button</button>

<table class='table' *ngIf="collection">
<tbody>
    <tr *ngFor="let item of collection">
        <td>{{ item.id }}</td>
        <td>{{ item.name }}</td>
    </tr>
</tbody>

В методе myEvent я не знаю, как мне получить соответствующий связанный объект данного идентификатора, чтобы я получил его свойство name и отправил его в свой WEB API:

temp: any = { id: '' };

myEvent() {
    this.http.get('url', {
        params: {
            id: this.temp.id,
            name: ???
        }
    })
}

Ответы [ 3 ]

0 голосов
/ 28 апреля 2018

Если у вас есть коллекция предметов, ее можно найти по свойству id несколькими способами.

Вот один из способов использования массива find :

myEvent() {
    const item = this.collection.find(i => i.id === this.temp.id);

    if (!item) {
        return;
    }
    ...
}
0 голосов
/ 28 апреля 2018

Вы можете сделать что-то вроде этого:

Enter Id: <input type="text" [(ngModel)]="temp.id"> 

<table class='table' *ngIf="collection">
<tbody>
   <tr *ngFor="let item of collection">
      <td>{{ item.id }}</td>
      <td>{{ item.name }}</td>
      <td><button (click)="myEvent(item)">My Button</button></td>
    </tr>
</tbody>

И получите выбранный предмет в вашем myEvent

myEvent(item: any) {
  this.http.get('url', {
      params: {
          id: item.id,
          name: item.name
    }
 })
}
0 голосов
/ 28 апреля 2018

Вы можете использовать собственный метод JavaScript find () для получения точного объекта и поля имени доступа в component.ts

let name = this.collection.find(t=> t.id == this.temp.id).name; 

Тогда вы сможете передать имя с вашим я в API.

...