1

我在 Angular 中创建了一个自定义控件,比如my-select-input ,它包装了原生选择输入。模板看起来像这样。

<div class="select-container">
<select
    class="form-control"
    [ngModel]="value"
    (ngModelChange)="value$.next($event)">
    <ng-content></ng-content>
  </select>
</div>

我的选择输入组件看起来像这样。

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 在其中存储一个对象。不知道这里有什么问题。任何帮助表示赞赏。

控制使用 value 属性而不是 ngValue 可以很好地工作。

类似问题 - https://github.com/angular/angular/issues/22374

4

0 回答 0