Я предпочитаю хранить информацию о параметрах в массиве и l oop через него.
this.emojis = [
{
displayValue: 'Angry',
value: 'angry',
src: './src/assets/emoticons/png/angry.png'
},
{
displayValue: 'Bored',
value: 'bored',
src: '~assets/emoticons/png/bored.png'
},
...
]
this.angForm = this.fb.group({
emoji: [null, [ Validators.required ] ]
});
<select multiple formControlName="emoji">
<option [ngValue]="null" disabled>Choose your emoji</option>
<option *ngFor="let emoji of emojis" [style.backgroundImage]="'url(` + emoji.src + ')'" [ngValue]="emoji.value">
{{ emoji.displayValue }}
</option>
</select>
Но если вы действительно хотите получить текстовое содержимое узла, вам придется использовать ViewChild
Не рекомендуется
<option #emojiRefs *ngFor="let emoji of emojis" [style.backgroundImage]="'url(` + emoji.src + ')'" [ngValue]="emoji.value">
@ViewChildren("emojiRefs") private emojiRefs: QueryList<ElementRef<HTMLOptionElement>>;
this.emojiRefs.toArray()[0].textContent