Чтобы использовать двустороннюю привязку для свойства foo, вам необходимо сопутствующее свойство с именем fooChanged
Синтаксис [(x)] легко продемонстрировать, когда элемент имеетустанавливаемое свойство с именем x и соответствующее событие с именем xChange.Вот SizerComponent, который соответствует шаблону.Он имеет свойство size size и сопутствующее событие sizeChange
Так что если мы возьмем ваш пример, вам нужно упростить код выпадающего компонента до:
import {Component, OnInit, Input, Output, EventEmitter} from '@angular/core';
@Component({
selector: 'app-dropdown',
templateUrl: './dropdown.component.html',
styleUrls: ['./dropdown.component.css']
})
export class DropdownComponent implements OnInit {
isOpen = false;
@Input() selected ;
@Input() data;
@Output() selectedChange = new EventEmitter<number>();
constructor() { }
ngOnInit() {
}
selectItem(item) {
this.isOpen = false;
this.selected = item;
this.selectedChange.emit(this.selected);
}
}
и использовать его следующим образом:
<app-dropdown [(selected)]="select" [data]="['AAA', 'BBB', 'CCC']"></app-dropdown>
Вот рабочий пример https://stackblitz.com/edit/angular-gkxedg