角度 - 将对象模型与视图中的初始模型值进行比较

时间:2018-05-08 09:04:42

标签: javascript angular typescript model

我正在尝试检测名为“invoice”的模型属性的更改,以便只有当此对象的值与初始模型的值不同时才能启用按钮,'{ {1}}',在组件初始化时创建。

所以我需要能够在视图中比较两者:

initModel

通过在构造函数中为服务提供另一个变量的值来初始化'invoice'模型。

我试图想出一种设置'initModel'组件变量的方法,但这明显与'invoice'模型绑定,所以当'invoice'发生变化时,'initModel'也会发生变化,而我不能将'initModel'设置为可以在视图中访问的const。

组件:

<button mat-button (click)="saveChanges()" [disabled]="invoice !== initModel">Save Changes</button>

2 个答案:

答案 0 :(得分:0)

初始化initModel时,您没有创建新对象,只是将引用传递给现有的invoice对象。

您可以使用Spread Operator创建初始对象的克隆(not a deep clone,请注意):

this.initModel = {...this.invoice};

如果您需要深度克隆,可以使用外部库(例如lodash),请查看this详细答案。

答案 1 :(得分:0)

您可以尝试以下代码:

   <Mapa
    style="mapbox://styles/mapbox/light-v9"
    onDrag={this.onDrag}
    // fitBounds={fitBounds}

    fitBoundsOptions={boundOptions}
    containerStyle={{
      height: "100%",
      width: "100%"
    }}
    flyToOptions={{
      speed: 0.8
    }}
    center={center}
    zoom={zoom}
    attributionControl={false}
    onZoomEnd={this.mapZoomEnd.bind(this)}
    onZoomStart={this.mapZoomStart.bind(this)}
  >