<div
    [ngStyle]="{'top.px': top, 'left.px': left, 'width.px': width}">

    <div class="filter"
        *ngIf="!multiple && filterEnabled">
        <input
            #filterInput
            autocomplete="off"
            [placeholder]="placeholder"
            (click)="onSingleFilterClick()"
            (input)="onSingleFilterInput($event)"
            (keydown)="onSingleFilterKeydown($event)"
            (focus)="onSingleFilterFocus()">
    </div>

    <div class="options"
        (click)="onOptionsListClick()"
        #optionsList>
        <ul
            (wheel)="onOptionsWheel($event)">
            <li *ngFor="let option of optionList.filtered"
                [ngClass]="{'highlighted': option.highlighted, 'selected': option.selected, 'disabled': option.disabled}"
                [ngStyle]="getOptionStyle(option)"
                (click)="onOptionClick(option)"
                (mouseover)="onOptionMouseover(option)">
                <ng-template [ngOutletContext]="{option: option}" [ngTemplateOutlet]="optionTemplate"></ng-template>
                <span *ngIf="!optionTemplate">{{option.label}}</span>
            </li>
            <li
                *ngIf="!optionList.hasShown"
                class="message">
                {{notFoundMsg}}
            </li>
        </ul>
    </div>
</div>

<div
    [ngStyle]="{'top.px': top, 'left.px': left, 'width.px': width}">

    <div class="filter"
        *ngIf="!multiple && filterEnabled">
        <input
            #filterInput
            autocomplete="off"
            [placeholder]="placeholder"
            (click)="onSingleFilterClick()"
            (input)="onSingleFilterInput($event)"
            (keydown)="onSingleFilterKeydown($event)"
            (focus)="onSingleFilterFocus()">
    </div>

    <div class="options"
        (click)="onOptionsListClick()"
        #optionsList>
        <ul
            (wheel)="onOptionsWheel($event)">
            <li *ngFor="let option of optionList.filtered"
                [ngClass]="{'highlighted': option.highlighted, 'selected': option.selected, 'disabled': option.disabled}"
                [ngStyle]="getOptionStyle(option)"
                (click)="onOptionClick(option)"
                (mouseover)="onOptionMouseover(option)">
                <ng-template [ngOutletContext]="{option: option.wrappedOption}" [ngTemplateOutlet]="optionTemplate"></ng-template>
                <span *ngIf="!optionTemplate">{{option.label}}</span>
            </li>
            <li
                *ngIf="!optionList.hasShown"
                class="message">
                {{notFoundMsg}}
            </li>
        </ul>
    </div>
</div>

Allow any of the option properties to be used in the option template.
Allow any of the option properties to be used in the option template.
