如何在Angular 4反应形式的PrimeNg MultiSelect中默认设置选定值?

时间:2018-09-26 05:18:22

标签: angular primeng angular-reactive-forms primeng-dropdowns

我正在使用带有响应式表单的PrimeNg(PrimeNg Multiselect)和Angular4中的MultiSelect控件,并且我希望在加载表单时保持默认选中我的某些项目。

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>

这是我的TypeScript代码

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: []
 });

3 个答案:

答案 0 :(得分:1)

HTML

您需要在primeng组件中设置ngModel

<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));

在这里,我选择了所有这些。

您还必须对Sensorlist对象进行udp处理,以将选择的值更改为true

答案 1 :(得分:0)

您必须在ngOnInit中设置默认选项

selectedSensorsList: [{'id': 0, 'itemName': 'lat'}]

答案 2 :(得分:0)

创建selectedSensorsList时,您需要为formGroup提供价值:

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

或稍后设置值:

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