如何 setValue/PatchValue 反应形式的 ngselect 中的多个值

How to setValue/PatchValue multiple value in ngselect in reactive form

我有 ng select 由语言组成。一个用户可以有多种语言。在 ng select 上绑定多个 selected 值时显示空标签。我的代码在下面。 编辑时我想在 ng select 上显示已保存的语言标签,但它显示的标签是空的,请有人帮忙。我正在使用反应形式 **附上参考图片**

HTML

 <ng-select class="w-100" [multiple]="true"   [hideSelected]="true" placeholder="Please Select Language"
            formControlName="language" [bindValue]="language.id"  [bindLabel]="language.name" 
            >
            <ng-option *ngFor="let language of languages" [value]="language.id">{{language.name}}</ng-option>
          </ng-select>

Typescript

this.form.patchValue({ 语言: this.editData.teacherProfile.teacherProfile.language })

Data is retrieving in this form "language": [ { "_id": "5fb79cdd34ec021e64c2413e", "name": "English", "id": "5fb79cdd34ec021e64c2413e" }, { "_id": "5fb7996034ec021e64c2412a", "name": "Arabic", "id": "5fb7996034ec021e64c2412a" } ],

ng-select 被一个数组“喂养”,但不是一个对象数组,否则是一个“id”数组,

我想你需要制作类似的东西:

myForm.get('language').setValue(
               language.map(x=>x.id)
)

查看我们如何仅使用 map 创建具有 属性“id”的数组。

确保您为字段设置的值在字段的值选项中可用

假设为 select 下拉菜单的选项设置的值是 id,如 2、3、4,那么您需要设置相同的值,以便名称在那里可见

在上述情况下,当您使用结构共享数据时,您需要将所有 id 放入一个类似数组的数组中

languageID = [2, 3, 4, 5]

直接patch到字段

   this.form.patchvalue({ languageid: this.languageID })