我在Angular中创建了一个自定义控件,如 my-select-input ,它包含了原生选择输入。模板看起来像这样。
<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);
});
}
Component还扩展了一个实现controlvalueaccessor的类。
当我尝试使用这样的组件时:
<my-select-input formControlName="select">
<option *ngFor="let item of selectValues" [ngValue]="item">{{item.label}}</option>
</my-select-input>
ngValue被完全忽略,我得到的值是options标签之间的文本。我使用ngValue在其中存储对象。不知道这里有什么问题。任何帮助表示赞赏。
使用value属性而不是ngValue,控件完全正常。