【问题标题】:Angular Two-Way Data Binding a Starting and Ending TimestampAngular 双向数据绑定开始和结束时间戳
【发布时间】:2019-04-04 19:00:51
【问题描述】:

我正在为员工设置一个对话框,以使用惊人的时间选择器 (https://www.npmjs.com/package/amazing-time-picker) 选择他们工作的开始和结束时间。我已经设置了两个带有双向绑定的输入标签。当用户第二次选择时,另一个元素发生变化。例如,我选择上午 8 点作为开始时间,然后选择下午 12 点作为结束时间。当我选择中午 12 点时,开始时间更改为中​​午 12 点,而不是停留在上午 8 点。

除了在我的谷歌搜索中没有找到任何关于影响多个字段的双向数据绑定的内容之外,我还搞砸了更改属性。我没有在这条路上走得太远,因为它需要我更改多个组件。我想知道我是否必须这样做,但我想先确认一下。

// Here are the start and stop input tags...
<input name="startTime" id="startTime" class="form-control" atp-time- 
picker type="time" [(ngModel)]="timestamp.date">
<input name="stopTime" id="stopTime" class="form-control" atp-time-picker type="time" [(ngModel)]="timestamp.date">

//The timestamp interface is just... 
public date: Date;

我希望最终用户选择开始和停止时间,而不是让它们相互更改。我计划捕获这些时间戳并将它们放入时间卡对象中。仅供参考,我的考勤卡详情界面是...

...
 public timestamps: Array<Timestamp>;
...
 public constructor() {
     this.timestamps = new Array<Timestamp>();
 }

这些详细信息将被放入一个数组中,然后放入员工的考勤卡中......

...
 public timecardDets: Array<TimecardDet>;
...
 public constructor() {
     this.timecardDets = new Array<TimecardDet>();
 }

【问题讨论】:

    标签: angular binding timestamp


    【解决方案1】:

    您应该使用两种不同的模型绑定。

    ts:

    startTime: Timestamp;
    stopTime: Timestamp;
    

    html:

    <input name="startTime" id="startTime" class="form-control" atp-time-picker type="time" [(ngModel)]="startTime">
    <input name="stopTime" id="stopTime" class="form-control" atp-time-picker type="time" [(ngModel)]="stopTime">
    

    因此,当您导出日期时,您可以将它们放入数组中,或者在 (change) 方法中更改时设置它们


    编辑
    html:

    <input name="startTime" id="startTime" class="form-control" atp-time-picker type="time" [(ngModel)]="date[0]" (change)=calculate()>
    <input name="stopTime" id="stopTime" class="form-control" atp-time-picker type="time" [(ngModel)]="date[1]" (change)=calculate()>
    

    ts:

    calculate() {
      // get the diff
    }
    

    【讨论】:

    • 这就是我的想法,我正沿着这条路走,但不想走得太远,以防万一它走错了路,因为它需要多次更改。我刚刚接手了这个项目。我认为之前的开发人员希望使用一个简单的时间戳接口,使用单个时间戳来处理启动和停止。最重要的是,我只想获取开始和停止时间戳并进行数学运算以查看个人工作了多长时间。您是否知道我可以阅读的有关此内容的任何资源?
    • 看看this post对你有没有帮助
    • 感谢您提供的信息。我最终做的是,因为我只对开始和停止时间之间的小时差感兴趣,所以我以编程方式计算它,而不是存储各个时间。我正在进行计算,然后使用渲染器更新表单输入总计字段。现在我需要弄清楚如何触发字段值发生了变化。
    • 我刚刚阅读了您的编辑@gaspar。如果我正在执行计算方法(从我的评论中可以看出我采用的方向),那么拥有 ngModel 的价值是什么?
    • 如果你在本地组件中声明你的变量,你需要做的就是例如this diff = this.date[1] - this.date[0];calculate()里面。以小时为单位计算差异的方法是here
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-26
    • 1970-01-01
    • 2013-06-14
    • 2020-02-22
    • 2012-10-29
    • 1970-01-01
    • 2018-01-03
    相关资源
    最近更新 更多