Я пытаюсь создать компонентную оболочку компонента в Angular 2 с помощью ngModel. Все события срабатывают корректно после изменения выбора, но я не могу установить начальный выбор, когда он отображается.Угловой 2 Выберите начальный выбор исходного набора компонентов
Это мой компонент:
@Component({
selector: 'my-dropdown',
inputs: ['selectedItem', 'items', 'label'],
outputs: ['selectedItemChange'],
template: `
<div class="field">
<label>{{label}}</label>
<select class="ui search selection dropdown" [ngModel]="selectedItem" (change)="onChange($event.target.value)">
<option value="" selected>Please Select</option>
<option *ngFor="#item of items" [value]="item.value">{{item.label}}</option>
</select>
</div>`
})
export class MyDropdownComponent {
items: DropdownValue[];
selectedItem: DropdownValue;
selectedItemChange: EventEmitter<any> = new EventEmitter();
private onChange(newValue) {
console.log(newValue);
this.selectedItem = this.items.find(item => item.value == newValue);
console.log(this.selectedItem);
this.selectedItemChange.emit(newValue);
}
}
И я использую его в представлении, как это:
<my-dropdown [items]="selectItems" [(selectedItem)]="itemToSelect" [label]="'Please Select'"></my-dropdown>
Когда я установил значение itemToSelect
в родительском компоненте по инициализации, это делает не задайте значение выбранного параметра в пользовательском интерфейсе.
Я также пытался использовать событие ngModelChange
, но он не запускает событие изменения.
Я изучаю ваш пример plunker, и вопрос, который у меня есть, - это кто или что определяет тип «DropdownValue». Когда я перемещаю этот код из среды plunke, он не определен. Спасибо .... –
@IrvLennert, это была ошибка копирования-вставки с моей стороны (из кода OP). Они не нужны (я их удалил). Я использовал свой собственный массив объектов, назначенных 'selectItems', так как OP не показывал нам определение типа DropdownValue. –
@MarkRajcok это работает, но определяет ngModel для фактического выбранного значения элемента. [[NgModel] = "selectedItem.value" вызывает ошибку, когда начальный выбор не задан, как бы вы это предотвратили? – EnlitenedZA