Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 使用*ngFor显示月份中的天数_Html_Angular_Ngfor - Fatal编程技术网

Html 使用*ngFor显示月份中的天数

Html 使用*ngFor显示月份中的天数,html,angular,ngfor,Html,Angular,Ngfor,在我的Angular项目中,我尝试使用*ngFor来显示日历 在一系列对象中,我有我的月份和天数: public months: Array<Object> = [ { month: "January", days: 31 }, { month: "February", days: 28 }, { month: "March", days: 31 }, { month: "April", days: 30 }, { month: "May"

在我的Angular项目中,我尝试使用*ngFor来显示日历

在一系列对象中,我有我的月份和天数:

  public months: Array<Object> = [
    { month: "January", days: 31 },
    { month: "February", days: 28 },
    { month: "March", days: 31 },
    { month: "April", days: 30 },
    { month: "May", days: 31 },
    { month: "June", days: 30 },
    { month: "July", days: 31 },
    { month: "August", days: 31 },
    { month: "September", days: 30 },
    { month: "October", days: 31 },
    { month: "November", days: 30 },
    { month: "December", days: 31 },
  ];
公共月份:数组=[
{月份:“一月”,天数:31},
{月份:“二月”,天数:28},
{月份:“三月”,天数:31},
{月份:“四月”,天数:30},
{月份:“五月”,天数:31},
{月份:“六月”,天数:30},
{月份:“7月”,天数:31},
{月份:“8月”,天数:31},
{月份:“九月”,天数:30},
{月份:“10月”,天数:31},
{月份:“11月”,天数:30},
{月份:“12月”,天数:31},
];
然后我试着用*ngFor来显示它们。月份显示正确,但我不太清楚如何正确显示每一天。以下是我的html的内容:


2019年假期日历
  • {{month.month}}
    {{currentYear}
  • 我们
  • Th
  • Fr
  • Sa
    {{i}

您的问题是您试图在“数字”上迭代的内容。在月份对象中,您有:

{ month: "January", days: 31 },
您正试图迭代31次。如果您将有一个天数数组,如:

{ month: "January", days: [31, ...] }
它会起作用的

我没有做正确的事情,让我的ngFor从1数到31,或者每个月有多少天,但我不知道如何去做。非常感谢您的帮助,谢谢

如果要在对象中创建一个从1到日的数字数组,可以在类中声明一个方法,该方法将在以下情况下生成:

public getMonthDays(daysCount: number): Array<number> {
  const resultArray = [];
  for (let i = 1; i <= daysCount; ++i) {
    resultArray.push(i);
  }
  return resultArray;
}
publicGetMonthDays(daysCount:number):数组{
常量结果数组=[];

对于(设i=1;i您需要迭代一个数组以使*ngFor工作,这意味着您需要根据天数«如@srjkaa在其示例中所述»生成一个数组

您可以执行类似{记住将+1添加到索引}的操作:

 <li *ngFor="let day of monthDays(month.days); let j=index">{{j+1}}</li>
这比使用for循环更好,因为它不是最优的,它会增加O(^n)。
i、 e.

如果你想成为一名日期选择器,这里有一个精彩的教程(也可以用来查看日期)请注意,2月份的天数大约每4年左右就会不正确…@AndrewAllen我希望创建与日期选择器相同的外观,只是没有可点击的功能,并且一次查看所有月份,而不是一个月,因此我肯定会检查这一点,因为我在思考如何计算我知道每天从哪一天开始,等等。谢谢!我认为你需要使用某种日期库或日期对象。我很懒,所以我想使用moment.js,但没有理由不能将JavaScript日期与getDay()等方法一起使用.啊,好吧,我知道有一种方法可以做到这一点,而不用在我的对象数组中创建单独的数组。谢谢!
 <li *ngFor="let day of monthDays(month.days); let j=index">{{j+1}}</li>
monthDays(number){
  return new Array(number);
}