jquery-select2 - 在按钮单击时设置 ng-select2 的值
问题描述
场景是,当用户按下页面上的编辑按钮时,我需要设置下拉列表的值(ng-select2) 。我正在使用 ajax 来获取选项。代码是有角度的。我参考了:https ://github.com/tealpartners/ng-select2
<div class="form-div">
<label for="uploader">Select Uploader<span class="asterick-red">*</span>
</label>
<ng-select2 formControlName="uploader" id="uploader" [options]="select2Options" width="270">
</ng-select2>
</div>
<div class="form-div">
<label for="uploader">Select Approver<span class="asterick-red">*</span>
</label>
<ng-select2 formControlName="approver" [id]="uploader" [options]="select2Options" width="270">
</ng-select2>
</div>
</div>
setSelect2Options() {
this.select2Options = {
triggerChange: true,
allowClear: true,
placeholder : 'Select User* ',
minimumInputLength: 3,
ajax: {
url: '/api/reward/uploader/approver/search/user?limit=15',
headers: {
'X-XSRF-TOKEN': sessionStorage.getItem("auth"),
'content-type': 'application/json'
},
dataType: 'json',
type: "GET",
quietMillis: 50,
data: function (term, page) {
return {
q: term.term, // search term
_: term._type
};
},
processResults: function (data) {
return {
results: $.map(data.results, function (item) {
return {
id: item.id,
text: item.name + " - " + item.email
}
})
};
}
},
//[placeholder]="'Select User* '"
}
}
上面的代码很好。但是现在单击按钮我需要在选择框中设置一个值。
this.vcDataService.getUploaderAproverDetails(id).subscribe((res: any) => {
this.uploaderApproverForm.controls['approver'].setValue(res.approverDetails.uploaderUserId);
this.uploaderApproverForm.controls['uploader'].setValue(res.uploaderDetails.approverUserId);
console.log("134", res)//uploaderUserId
//this.select2Options.ajax.processResults.push({id: 103, text: "aa"})
this.select2Options.placeholder="aa";
//this.displayUploader = "aaa";
// $('#uploader').val('ENABLED_FROM_JS');
// $('#uploader').trigger('change');
// this.select2Options.templateSelection = {
// selected: true,
// id: res.approverDetails.approverUserId,
// text: res.approverDetails.approverName,
// title: res.approverDetails.approverName
// }
// this.select2Options.initSelection = {
// callback: {
// data: {"id":103, "text":'ENABLED_FROM_JS'}
// }
// }
console.log(this.select2Options);
this.updateApproverUploader = true;
this.uploaderApproverId = res.uploaderApproverId;
this.cd.detectChanges();
},
err => {
Swal.fire('Oops...', err.error.err, 'error');
})
我尝试了几件事,但没有得到解决方法。
解决方案
在浏览了文档后,我找到了解决方案。我使用了 ng-select2 的 data 属性并将其分配给 Select2OptionData 类型的变量。
import { Select2OptionData} from 'ng-select2';
patch_panel_array: Select2OptionData[];
然后我添加了需要在字段中显示的所需数据,如下所示:
res.panelApprovers.map(item => {
this.patch_panel_array.push({
id: item.panelApproverUserId,
text: item.panelApproverUserName + " - " + item.panelApproverUserEmail
})
approverIds.push(String(item.panelApproverUserId));
});
this.formData.controls['panelApprover'].setValue(approverIds);
这是我的选择 2 字段:
<ng-select2 formControlName="panelApprover" [data]="patch_panel_array" [options]="select2OptionsPanel" width="100%" style="width: 100%;">
</ng-select2>
推荐阅读
- php - 相同的代码仅适用于我使用的 2 台服务器中的 1 台
- json - 根据键值的否定创建 Json 模式依赖项
- javascript - React:根据登录状态有条件地在路由中渲染组件,而不显示加载页面
- wpf - menuitem.icon 中的 wpf 可变图像
- python - 如何使用递归创建二维列表而不将其作为参数传递给递归函数,python
- javascript - React 16.6 惰性/悬念 DOM 异常
- python - 准确获取跨越不同年份的两个日期之间的月数的最佳方法
- python - 转换为十六进制字符串时出现错误“需要整数”?
- vim - 从多个文件grep,在vim中交互修改匹配行的内容,保存后,更改应保存到相应文件
- mongodb - MongoDB:最新的 docker 容器以退出代码 14 终止