4

I am using MultiSelect control from PrimeNg (PrimeNg Multiselect) & Angular4 with a Reactive Form, and I want to keep some my items default selected during form loading.

HTML

<div class="col-md-4">
      <span translate>settings.account.webhook.label.additional.variables</span>
      <p-multiSelect [options]="sensorsList" (onChange)="changeSensorsList($event)"
            formControlName="selectedSensorsList" name="selectedSensorsList" [panelStyle]="{minWidth:'20em'}"></p-multiSelect>
</div>

Here is my TypeScript code

sensorsList = [
    { label: 'lat', value: {'id': 0, 'itemName': 'lat', 'selected': false }},
    { label: 'lng', value: {'id': 1, 'itemName': 'lng' , 'selected': false}},
    { label: 'address', value: {'id': 2, 'itemName': 'address' , 'selected': false}},
    { label: 'origin', value: {'id': 3, 'itemName': 'origin' , 'selected': false}}
  ];

 this.addEditWebhookForm = this._formBuilder.group({
      name: [(_webhookToEdit) ? _webhookToEdit['name'] : '', [Validators.required]],
      selectedSensorsList: []
 });
Patricio Vargas
  • 5,236
  • 11
  • 49
  • 100
Ketan Navadiya
  • 279
  • 3
  • 6
  • 18

3 Answers3

-1

HTML

You need to set a ngModel in your primeng component

<div class="col-md-4">
          <span translate>settings.account.webhook.label.additional.variables</span>
          <p-multiSelect [options]="sensorsList" (onChange)="changeSensorsList($event)"
                formControlName="selectedSensorsList" name="selectedSensorsList" [panelStyle]="{minWidth:'20em'}"  [(ngModel)]="selectedDefault"></p-multiSelect>
    </div>

TS

selectedDefault= [];
sensorsList.map((item) => selectedDefault.push(item.value));

Right here I'm selecting all of them.

You will also have to udpate the sensorlist object to changed the value selected to true

Patricio Vargas
  • 5,236
  • 11
  • 49
  • 100
-1

You have to set default option with in ngOnInit

selectedSensorsList: [{'id': 0, 'itemName': 'lat'}]
Chintan Kukadiya
  • 784
  • 5
  • 16
-1

You need to provide value for your selectedSensorsList when you create the formGroup:

 this.addEditWebhookForm = this._formBuilder.group({
     ...,
     selectedSensorsList: [
         defaulSensorsList
     ]
 });

or set the value later:

this._formBuilder.get('selectedSensorsList').setValue(defaultSenorsList);

Ludevik
  • 6,954
  • 1
  • 41
  • 59