双向数据绑定不适用于 angular 9+ 中的 ng-select

Two way data binding is not working with ng-select in angular 9+

我正在做一个 angular 项目,我需要为 ng-select 下拉菜单分配一个默认值,但它不起作用,也没有在下拉菜单更改时更新。

这是代码。

模板代码

  <ng-select
  [items]="countries"
  class="text-capitalize"
  bindValue="id"
  [closeOnSelect]="true"
  [(ngModel)]="defaultCountry"
  [searchable]="true"
  (change)="changeCountry($event)"
  placeholder="{{
    _translate.currentLang == 'en'
      ? 'Country'
      : _translate.currentLang == 'ps'
      ? 'هیواد'
      : 'کشور'
  }}"
  [formControlName]="countryControlName"
>
  <ng-template ng-label-tmp let-item="item">
    {{
      _translate.currentLang == "en"
        ? item.label_en
        : _translate.currentLang == "ps"
        ? item.label_ps
        : item.label_fa
    }}
  </ng-template>
  <ng-template ng-option-tmp let-item="item">
    {{
      _translate.currentLang == "en"
        ? item.label_en
        : _translate.currentLang == "ps"
        ? item.label_ps
        : item.label_fa
    }}
  </ng-template>
</ng-select>

这是打字稿代码

defaultCountry:any;

 this.countries = [ {id: "1", label_en: "Afghanistan", label_ps: "افغانستان", label_fa: "افغانستان", value: "Afghanistan"},
 {id: "3", label_ps: "البانیا", label_fa: "البانیا", label_en: "Albania", value: "Albania"},
 {id: "3", label_ps: "الجزایر", label_fa: "الجزایر", label_en: "Algeria", value: "Algeria"}];


 this.defaultCountry = '1';

也许一种解决方案是使用 @ViewChild 更新 select:

@Component({...})
export class MyComponent {
  @ViewChild(NgSelectComponent, {static: true}) selectCmp: NgSelectComponent;
  ngOnInit(){
    this.selectCmp.select({ value: '1' })
  }
}

也许你应该初始化 defaultCountry :

defaultCountry: any = {};

我的天啊! 我终于设法解决了。 我在 ng-select 下拉列表中使用了双向绑定和 formControlNames,这阻止了将默认值分配给输入字段。当我删除控件名称时,它确实起作用了。 感谢您发布答案的努力。