Как получить ссылку на объект mat-option в компоненте автозаполнения материала - PullRequest
0 голосов
/ 22 мая 2018

Я пытаюсь заменить выпадающий список boostrap на автозаполнение материала без рефакторинга большей части предыдущего кода;

Вот как выглядит HTML нового автозаполнения материала:

<input matInput placeholder="New room" aria-label="Newsroom Source" [matAutocomplete]="autoGroup" [formControl]="newsRoomCtrl" [value] = 'selectedNewsFeed.sourceName'>
<mat-autocomplete #autoGroup="matAutocomplete" (optionSelected)='onNewsRoomSelect($event.value)'   >
    <mat-option *ngFor="let newsroomsource of filteredNewsRoomSources | async"  [value]="newsroomsource" [attr.data-row]="newsroomsource">
      <span>{{ newsroomsource.sourceName }}</span> |
      <small>Type: {{ newsroomsource.sourceType }}</small>
    </mat-option>
</mat-autocomplete>

Вкл.Событие '(optionSelected)' Я вызываю функцию onNewsRoomSelect(selectedNewsRoom: NewsRoomSource), передавая выбранный источник новостей как объект, используя event.value

Это работает нормально, но проблема в том, что значение ввода становится объектом в этомcase и NewsRoomSource объект, и это то, что я вижу на входе после выбора;

Выбор: Selecting

После выбора:
After Selection

Теперь я понимаю, почему это происходит, когда я устанавливаю [значение] тега mat-input для объекта, т.е. источника новостей, но я не знаю, как еще я могу ссылаться навыбранный объект, если я не делаю этого.

Как вы можете видеть в коде, я пытался использовать атрибут данных, но не был уверен, как именно я могу использовать его в этом случае

1 Ответ

0 голосов
/ 22 мая 2018

В этом случае newsRoomCtrl имеет ссылку на выбранный объект, попробуйте распечатать эту переменную console.log(newsRoomCtrl);

Наконец, я думаю, что это будет так, взгляните на структуру объекта, чтобы бытьконечно.

    <input matInput placeholder="New room" aria-label="Newsroom Source" [matAutocomplete]="autoGroup" 
[formControl]="newsRoomCtrl" [value] = 'newsRoomCtrl.value.sourceName'>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...