【问题标题】:Detect change in each object of an array. Typescript/Angular 2检测数组中每个对象的变化。打字稿/角度2
【发布时间】:2017-07-05 05:55:07
【问题描述】:

我有一个显示在primeng 数据表中的人员数组。每个对象都有这些字段(名字、姓氏和年龄)。每个字段对应于表中的一列,其中一列显示每个对象的状态。状态指示表中的对象/行是否已更改。有两种状态“对象更改/未更改”

<p-dataTable [value]="persons" [editable]="true"  resizableColumns="true" reorderableColumns="true"> 
    <p-column header="Status">
      <ng-template pTemplate="body">
         <span [hidden]=true>Object Change</span>
       <span >Not Change</span>
      </ng-template>
    </p-column>
    <p-column field="firstName" header="First Name" [editable]="true"></p-column>
    <p-column field="lastName" header="Last Name" [editable]="true"></p-column>
    <p-column field="age" header="Age" [editable]="true">
      <ng-template let-col let-car="rowData" pTemplate="editor">
        <select class="form-control" [(ngModel)]="car[col.field]">
          <option [value]=12>12</option>
          <option [value]=14>14</option>
          <option [value]=23>23</option>
        </select>
      </ng-template>
    </p-column>
</p-dataTable>


<p>{{persons | json}}</p>

我将primeng数据表列editable设置为true,以便用户可以编辑表内的数据。现在,我想检测每个对象是否发生了变化。如果对象已更改,我希望将“状态”列设置为“对象更改”。我想在数组中的每个对象中应用这个条件。有没有办法检测数组中每一行/对象的变化。我为此创建了一个 plunkr。 http://plnkr.co/edit/x8Sdgz?p=preview

【问题讨论】:

    标签: angular typescript primeng


    【解决方案1】:

    一个可能的解决方案是替换

    [(ngModel)]="car[col.field]"
    

    [ngModel]="car[col.field]" (ngModelChange)="onCarChange($event)"
    

    这样你可以附加任何你想要的逻辑

    【讨论】:

    • 将检测整个对象的变化还是特定于某个字段。 ?我想要做的是检测对象/行的任何字段的变化。
    【解决方案2】:

    我会检测球场上的变化。如果你想拦截任何字段的每一个变化,你必须在数据表的每一列上使用相同的模式(ng-template)。

    亲切的问候

    【讨论】:

    • 我的问题是有些字段恰好被放置在不同的表中。就我而言,我有一个人员列表,其中字段分散在不同的表中。有没有办法立即检测到变化。无论我想要什么字段变化都会检测到对象的变化,
    猜你喜欢
    • 2019-07-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-21
    • 2018-11-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多