如何将字符串参数转换为TypeScript Angular变量的属性

时间:2019-05-22 10:13:48

标签: angular string typescript parameters

我有这两种方法:

changeStartTime(event, id) {
    if (event.hour >= 10 && event.minute >= 10) {
      this.priceRules[id-1].startTime = event.hour+":"+event.minute;
    }
    else if (event.hour >= 10 && event.minute < 10) {
      this.priceRules[id-1].startTime = event.hour+":0"+event.minute;
    }
    else {
      this.priceRules[id-1].startTime = "0"+event.hour+":0"+event.minute;
    }
  }

  changeEndTime(event, id) {
    if (event.hour >= 10 && event.minute >= 10) {
      this.priceRules[id-1].endTime = event.hour+":"+event.minute;
    }
    else if (event.hour >= 10 && event.minute < 10) {
      this.priceRules[id-1].endTime = event.hour+":0"+event.minute;
    }
    else {
      this.priceRules[id-1].endTime = "0"+event.hour+":0"+event.minute;
    }
  }

如您所见,它们非常相似,唯一变化的是startTimeendTime。这对开发人员来说是一种不好的方式,所以我想要的只是一个带有第三个参数的方法(也许是一个字符串?),但是我不知道该怎么做。谢谢

2 个答案:

答案 0 :(得分:2)

我认为这也许可以解决您的问题,但是不确定,因为我没有看到您的 priceRules 结构。

changeTime(event, id, type) {
  if (event.hour >= 10 && event.minute >= 10) {
    this.priceRules[id-1][type] = event.hour+":"+event.minute;
  }
  else if (event.hour >= 10 && event.minute < 10) {
    this.priceRules[id-1][type] = event.hour+":0"+event.minute;
  }
  else {
    this.priceRules[id-1][type] = "0"+event.hour+":0"+event.minute;
  }
}

其中'type'必须为'startTime''endTime'

答案 1 :(得分:2)

遵循以下语法:

this.priceRules[id-1]['startTime']

代替此:

this.priceRules[id-1].startTime

在这里您可以将'startTime'和'endTime'作为changeTime函数的参数传递

changeTime(event, id, key) {
    if (event.hour >= 10 && event.minute >= 10) {
      this.priceRules[id-1][key] = event.hour+":"+event.minute;
    }
    else if (event.hour >= 10 && event.minute < 10) {
      this.priceRules[id-1][key] = event.hour+":0"+event.minute;
    }
    else {
      this.priceRules[id-1][key] = "0"+event.hour+":0"+event.minute;
    }
  }