【发布时间】:2019-12-01 05:42:27
【问题描述】:
我在 stackoverflow 上遇到了许多类似的问题。但相信我,我实施了至少十个解决方案,但我没有得到正确的结果,而且他们中的大多数都在使用jquery 或javascript,而我必须使用typescript。我正在创建一个没有其他火箭科学功能的简单月份范围选择器。在一个接一个地实施一个解决方案之后,我的实际代码变得非常脏。所以我在 stackblitz 上创建了一个全新的最小项目,here。另外,在进行任何更改之前,我会提供我的代码。
我的monthpicker.component.html:
<div class="dropdown">
<span>
<input placeholder="{{sampletext}}, {{inputText}}">
</span>
<div class="my-table-div dropdown-content">
<div class="year-div">
<input type="number" value="2018" min="2018" max="2024" [(ngModel)]="inputText">
</div>
<hr>
<div *ngFor="let row of matrix" class="my-table">
<span *ngFor="let x of row">
<span class="month-name" (click)="onClick(x)">{{ x }}</span>
</span>
</div>
</div>
</div>
monthpicker.component.ts
import ...;
@Component({
...
})
export class MonthpickerComponent implements OnInit {
dt = new Date( );
arr = [
'Jan', 'Feb', 'Mar', 'Apr',
'May', 'Jun', 'Jul', 'Aug',
'Sep', 'Oct', 'Nov', 'Dec'
];
sampletext = ""+this.arr[this.dt.getMonth()];
inputText :number = this.dt.getFullYear();
clickCount: number=0;
n = 4;
matrix = Array
.from({ length: Math.ceil(this.arr.length / this.n) }, (_, i) => i)
.map(i => this.arr.slice(i * this.n, i * this.n + this.n));
constructor() { }
onClick(x) {
this.clickCount++;
console.log("Month: " + x);
this.sampletext = x;
console.log("Year: " + this.inputText);
console.log("Clicked "+this.clickCount +" times.");
if(this.clickCount%2==0) {
this.sampletext+=" " +this.sampletext+", "+this.inputText;
}
}
ngOnInit() {
}
}
请提出解决方案。
PS:我不想使用任何第三方库。甚至没有引导程序。我必须从头开始。
【问题讨论】:
-
我没有得到你的确切要求
-
@RajSan 我想用角度创建一个月份范围选择器。
-
您想使用 1 个输入字段制作月份范围选择器吗?
-
你想要两个月,从一年到一年?
-
@RajSan.Yes。确切地。但我会在一年后处理其他一些组件。现在让它硬编码。现在我想在同一个文本字段中显示该范围。请看一下我的 stackblitz,我刚刚做了一些更改。我非常感谢你的帮助。 :-)
标签: javascript angular typescript monthcalendar