简体   繁体   English

Angular 2,primeng:嵌套 *ngFor 和 ngModel 中的嵌套 *ngFor 中的 Primeeng 中的双向绑定

[英]Angular 2, primeng :Two way binding in nested *ngFor and ngModel in Primeng in *ngFor

I have a bunch of questions in Angular 2我在 Angular 2 中有一堆问题

I have created a demo to show you the behaviour我创建了一个演示来向您展示行为

Stack : Anglar 2, Primeng堆栈 : Anglar 2, Primeng

https://stackblitz.com/edit/primeng-template-5hrvte https://stackblitz.com/edit/primeng-template-5hrvte

Question 1 :问题 1:

I have a json file, through that i have created dynamic UI like checkbox and inputs and populated checkbox options dynamically.我有一个 json 文件,通过它我创建了动态 UI,如复选框和输入以及动态填充的复选框选项。 Now, problem starts from here no ngModel is working for comboBox, inputs or checkbox (i want to show default value)现在,问题从这里开始,没有 ngModel 可用于组合框、输入或复选框(我想显示默认值)

Update Question 1 : I got the solution for it but still stuck on Question 2更新问题 1:我得到了解决方案,但仍停留在问题 2 上

 [(ngModel)]="arrays.field[index].defaultValue" in input field
 [(ngModel)]="arrays.field[index].item[0].value" in dropdown
 [(ngModel)]=uiItems.defaultValue in checkbox {Refer ANS 1 soluton for it}

also add还添加

[name]="uiItems.id"

in order to populate default value为了填充默认值

Question 2 : How to make it two way binding in this scenario how do it get changed value objects?问题 2:如何在这种情况下进行双向绑定 如何获取已更改的值对象?

For COMBOBOX please use the following structure where block (A) has proper default value.对于COMBOBOX,请使用以下结构,其中块 (A) 具有适当的默认值。

{
  "uiWidget": "COMBOBOX",
  "id": "7",
  "name": "Order Type",
  "key": "pl.export.label.orderType",
  "defaultValue": "DEFAULT", // ------- (A)
  "width": "250",
  "isEnabled": "true",
  "item": [
    {
      "key": "00",
      "value": "DEFAULT"
    },
    {
      "key": "01",
      "value": "WILL CALL PICK UP"
    }
  ]
}

corresponding COMBOBOX html code对应的 COMBOBOX html 代码

<p-autoComplete 
    #dropdownValue 
    [inputId]="uiItems.id"
    [dropdown]="true"
    [name]="uiItems.id"
    [(ngModel)]="arrays.field[index].defaultValue"
    [suggestions]="getOptions(uiItems.item)">
</p-autoComplete>

In this case it will update the defaultValue attribute of the " uiItems "在这种情况下,它将更新“ uiItems ”的defaultValue属性

All code of app.component.html app.component.html 的所有代码

<form #addPartDialogForm="ngForm" autocomplete="off">
    <div *ngFor="let arrays of buildUI">
      <div *ngFor="let uiItems of arrays.field;  let index = index">

<br/>

        <div *ngIf="uiItems.uiWidget === 'TEXTINPUT'">
          <div>
            <span class="ui-inputgroup-addon"> {{uiItems.name}}</span>
            <input  [name]="uiItems.id" [(ngModel)]="arrays.field[index].defaultValue"
              [type]="uiItems.type" pInputText>
              <pre style="color:red;">{{arrays.field[index] | json}}</pre>
          </div>
        </div>
<br/>
        <div *ngIf="uiItems.uiWidget === 'COMBOBOX'">
          <div>
            <span class="ui-inputgroup-addon"> {{uiItems.name}}</span>
            <p-autoComplete #dropdownValue [inputId]="uiItems.id"
                            [dropdown]="true"
                            [name]="uiItems.id"
                            [(ngModel)]="arrays.field[index].defaultValue"
                            [suggestions]="getOptions(uiItems.item)">
            </p-autoComplete>
            <pre style="color:red;">{{arrays.field[index] | json}}</pre>
          </div>
        </div>


        <div *ngIf="uiItems.uiWidget === 'CHECKBOX'">
          <div>
            <span class="ui-inputgroup-addon"> {{uiItems.name}}</span>
            <p-checkbox #checckbox
                        [name]="uiItems.id"
                        [binary]="true"
                        [inputId]="uiItems.id"
                        [(ngModel)]= "uiItems.defaultValue" 
            ></p-checkbox>
          </div>
        </div>

      </div>
    </div>
  </form>

please check the inline screenshot.请检查内嵌屏幕截图。

在此处输入图片说明

I think your problem is here我认为你的问题在这里

"defaultValue": "false",

where you want to set a boolean, but set a string instead, which is resolved to true.你想设置一个布尔值的地方,而是设置一个字符串,它被解析为true。 boolean variables aren't set with quotes.布尔变量没有用引号设置。 try尝试

"defaultValue": false,

You have that problem anywhere you try to set a boolean.在任何尝试设置布尔值的地方都会遇到这个问题。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM