【问题标题】:Angular 4/6 materiel slider, time scale sliders for 24 hours角度 4/6 材料滑块,24 小时时间刻度滑块
【发布时间】:2018-07-09 18:26:28
【问题描述】:

我正在使用 Angular Material 创建一个滑块。这个滑块是 24 小时的,我想在侧面显示滑块的值。 以下事情正在发挥作用:

  1. 使用(change) 事件获取更改时滑块的值 .html
<mat-slider style="width:50%" thumbLabel name="range1" #timeSlider type="range" tickInterval="1" step="0.5" min="1" max="24"
                (change)="onChangeRange(timeSlider.value)">
</mat-slider>

.ts

onChangeRange(rangeValue: any) {
  console.log(rangeValue);
  this.showTime = rangeValue;
}

问题:

  1. 我想以时间HH:mm 的形式显示选择的值,下面也是我尝试使用以时间格式转换type: number 值但没有任何效果的插值
<button mat-raised-button class="displayTimeBtn">
  <span>
    {{showTime}}
    <!-- {{showTime | date:"shortTime"}} -->
  </span>
</button>
  1. 我也想改变“拇指标签”的显示

现在的样子:

【问题讨论】:

  • 请在您的问题中添加此评论,而不是在评论中。

标签: angular angular-material


【解决方案1】:

你只需要使用 mat-slider 的displayWith 属性来格式化拇指标签。因此,将您的模板代码更新为:

<mat-slider thumbLabel [displayWith]="formatLabel" tickInterval="1" step="0.5"
  min="1" max="24" (change)="onChangeRange($event)">
</mat-slider>

formatLabel 方法可以在哪里:

 formatLabel(value: number | null) {
    if (!value) {
      return 0;
    }

    let decimalPart = +value.toString().replace(/^[^\.]+/,'0');
    let mm = decimalPart * 60;
    var mmPart = mm.toString().length == 1 ? mm.toString() + "0" : mm.toString();

    if (value >= 0) {
      let valueStr = value.toFixed(2);
      let strArr = valueStr.split(".");
      if(strArr[0].length == 1) {
        strArr[0] = "0" + strArr[0];
      }
      var hhPart = strArr[0];
    }

    return hhPart + ":" + mmPart;
 }

现在您可以使用任何格式化或非格式化值作为模型值。

Example

【讨论】:

  • 感谢@Shantanu 的回答,但我在演示中看不到任何内容。
  • @jay 你用 chrome 打开链接吗?您是否支持任何公司代理?因为可能有一些脚本没有加载。因为我可以查看这个 stackblitz 应用程序
  • 我能够打开解决方案,它工作得很好。但我还有一个问题,现在在半小时它显示当前值 01:50 或 07:50(我知道这是因为我现在如何设置它)。但是因为这个比例是时间的,我怎样才能把它改成 01:30 或 07:30 类型格式?再次感谢您的帮助@shantanu。
  • @jay 检查更新的代码和更新的示例。我已将小数部分更新为分钟值。因此,对于任何步长的滑块,它都会按预期工作
  • 这是完美的。非常感谢你的帮助。我已经尝试了很多来找到像时间刻度滑块那样更纤细的东西,但找不到任何东西。我认为这对其他人也有很大的帮助。再次感谢。
猜你喜欢
  • 2014-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-11-22
  • 2019-03-13
  • 1970-01-01
相关资源
最近更新 更多