Html 使用*ngFor显示月份中的天数
在我的Angular项目中,我尝试使用*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"
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);
}