单击下一个:-加1,单击上一个:-子1。但重复整个过程

时间:2019-11-20 22:01:38

标签: angular

为什么我的代码中的所有日历都重复而不是更新月份值。在页面加载时,它显示从11月2019年到2020年4月的日历。单击getPreviousdata()时,它应仅将日历显示从 2019年10月至2020年3月。但从11月2019年至2019年4月以及从2019年10月至2020年3月显示。

我只想更新日历,而不是单击添加日历月。

也请检查stackblitz以便更好地理解

  ngOnInit() {

     const date = new Date();



        let month = date.getMonth();

      let year = date.getFullYear()

      this.getMonths(year, month);
    }

    getMonths(year:number, month:number) {

      for (let i = 0; i < 6; i++) {
        this.months.push(new Date(year, month++));
        console.log(this.months);
      }

    }

    getNextData() {
      const date = new Date();
      let month = date.getMonth()+ 1;

      let year = date.getFullYear()

      this.getMonths(year, month);

    }

    getPreviousData(){
      const date = new Date();
      let month = date.getMonth() - 1;

      let year = date.getFullYear()

      this.getMonths(year, month);
  };

4 个答案:

答案 0 :(得分:2)

找到带有选定plan的产品后,您可以使用Object.values查找计划。

var data = {
      products: { 
        medicare: {"11":"plan1", "12":"plan2", "13":"plan3", "14":"plan14"},
       medigap: {"112":"plan12", "122":"plan22", "132":"plan32", "142":"plan142"}
      }
 }
 var userSelected = 'medicare';
 
 var product = data.products[userSelected];
 var plans = Object.values(product);
 console.log(plans);
 
 
     

答案 1 :(得分:1)

尝试这个:

function getPlan(plan) {
  return Object.values(data.products[plan])
}
  • plan1将是medicare
  • plan2将是medigap

用法:

  • getPlan(plan1)返回['plan1', 'plan2', 'plan3', 'plan14']

  • getPlan(plan2)返回['plan12', 'plan22', 'plan32', 'plan142']

答案 2 :(得分:0)

data_sample = {
      products: { medicare: {"11":"plan1", "12":"plan2", "13":"plan3", "14":"plan14"},
       medigap: {"112":"plan12", "122":"plan22", "132":"plan32", "142":"plan142"}
      }}

plan1 ="medicare";
plan2 = "medigap";


var get_data = data_sample['products'][plan2];
var list = []

for (const [key, value] of Object.entries(get_data)) {
  console.log(value);
  list.push(value);
}
console.log(list);


尝试这种逻辑。您需要付出一些努力来重构它。

答案 3 :(得分:0)

在循环中动态传递计划名称,您将获得所需的结果。

plan1 = 'medicare';
plan2 = 'medigap';
resultArr = [];
Object.entries(data.products[plan1]).forEach(([key, value]) => {
  resultArr.push(value);
});

console.log(resultArr);