Я создал пользовательский элемент управления, скажем my-select-input в Angular, который оборачивает исходный выбор select.Шаблон выглядит следующим образом.
<div class="select-container">
<select
class="form-control"
[ngModel]="value"
(ngModelChange)="value$.next($event)">
<ng-content></ng-content>
</select>
</div>
Компонент my-select-input выглядит следующим образом.
ngOnInit() {
this.value$ = new BehaviorSubject(this._value);
this.valueSubscription = this.value$.subscribe((value) => {
this._value = value;
this.onChangeCallback(this._value);
});
}
Компонент также расширяет класс, который реализует controlvalueaccessor.
Когда я пытаюсь использовать компонент следующим образом:
<my-select-input formControlName="select">
<option *ngFor="let item of selectValues" [ngValue]="item">{{item.label}}</option>
</my-select-input>
ngValue полностью игнорируется, и полученное значение является текстом между тегом параметров.Я использую ngValue для хранения объекта внутри него.Не уверен, что здесь проблема.Любая помощь приветствуется.
Контроль отлично работает с атрибутом значения вместо ngValue.
Аналогичная проблема - https://github.com/angular/angular/issues/22374