Установить значение ng-select2 нажатием кнопки - PullRequest
0 голосов
/ 05 ноября 2019

Сценарий таков: мне нужно установить значение раскрывающегося списка ( 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');
      })

Я пробовал несколько вещей, но не нашел обходного пути.

...