когда я pu sh select2OptionData объект в массиве, select2 не отображать никакого значения - PullRequest
1 голос
/ 12 февраля 2020

select2 в моем angular проекте. Я хочу отобразить выбор массива сертификатов, запрошенных из API. Для каждого элемента, если я создаю и pu sh объект select2OptionData в массиве, но когда я хочу отобразить его на странице Html, он выбирается, но без какой-либо опции. Когда я создаю массив объектов, таких как gitHub, все правильно. Можете ли вы помочь мне, пожалуйста.

Вот ts

export class DashboardCvComponent implements OnInit, OnDestroy {

  certificateForm: FormGroup;
  certificates: Array<Certificate>;
  certificatesTypes: Array<Select2OptionData>;
  exampleData: Array<Select2OptionData>;


  constructor(private formBuilder: FormBuilder, private certificatesService: CertificatesService,
              private trainingsService: TrainingsService, private authService: AuthenticationService,
              private datepipe: DateFormatPipe, private CvService: CVService, private fileUploaService: FileUploadService) {

    this.certificatesTypes = [];
    this.exampleData = [];
   }

  ngOnInit() {

  // get certificate types
    this.certificatesService.getAllCertificatesType('50').subscribe(
      (response) => {
      // console.log('-> CERTIFICATES TYPES LOADING successful : ', response);
      /* this.certificatesTypes = response.data; */
      response.data.forEach(element => {
        const certif = {id: element.id.toString(), text: element.name};
        this.certificatesTypes.push(certif);
      });
      this.exampleData = [{
        id: 'basic1',
        text: 'Basic 1'
      },
      {
        id: 'basic2',
        disabled: true,
        text: 'Basic 2'
      },
      {
        id: 'basic3',
        text: 'Basic 3'
      },
      {
        id: 'basic4',
        text: 'Basic 4'
      }]
      console.log('les certif', this.exampleData, this.certificatesTypes);
      },
      (error) => {
       console.log('-> CERTIFICATES TYPES LOADING failed : ', error);
      },
      () => {
      }
    ); 

и html

<div class="dashboard--degrees">
    <app-certificate *ngFor="let certificate of certificates" [certificate]=certificate [url]=url></app-certificate>
    <button class="button button--bluegreen" type="button"  data-modal="modal-certificate">
      <svg class="icon icon-plus-o">
        <use xlink:href="#icon-plus-o"></use>
      </svg> <span  i18n="@@cvcomponent-addcertificate">J'ajoute un diplôme </span>
    </button>
    <select2 [data]="certificatesTypes"></select2>
    <select2 [data]="exampleData"></select2>
</div>

Здесь пример выбора данных отображается хорошо, но не CertificateTypes

1 Ответ

0 голосов
/ 12 февраля 2020

Не используйте this.certificate.pu sh внутри для l oop. он не будет работать. вместо вы можете использовать что-то вроде:

   let arrCertificates = [];
    response.data.forEach(element => {
           const certif = {id: element.id.toString(), text: element.name};
           arrCertificates.push(certif);
         });
   this.certificatesTypes = arrCertificates;
...