Angular 8 - 如何使用 ngxbootstrap/datepicker 只显示日期和月份
Angular 8 - How to show only date and month using ngxbootstrap/datepicker
我在项目中使用了ngx-bootstrap datepicker
只需要选择日期和月份如下image/link
Sample Image To show only date and month like this I needed
我搜索了很多,大多数示例都是使用 BsDatePickerConfig 的 minMode 显示月份和年份。
我尝试将 minMode 设置为 'day'。它显示正常的 day/month/year 日历视图。 但是我只需要日期和月份,不需要年份
下面是我的代码:
<div class="row">
<div class="col-xs-12 col-12 col-md-4 form-group">
<input
type="text"
placeholder="Datepicker"
[bsConfig]="datePickerConfig"
class="form-control"
bsDatepicker
/>
</div>
</div>
和component.ts文件
datePickerConfig: Partial<BsDatepickerConfig>;
minMode: BsDatepickerViewMode = 'day';
constructor() {
this.datePickerConfig = Object.assign(
{},
{
containerClass: 'theme-dark-blue',
showWeekNumbers: false,
minMode: this.minMode,
}
);
}
有没有办法像我的问题一样配置 ngx-bootstrap 日期选择器?
要么
建议任何允许此功能的替代日期选择器。
提前感谢您的宝贵时间...
您可以使用 Angular Material 及其日期选择器,您可以在其中使用具有自定义格式的自定义提供程序:显示和解析来执行此任务。此处描述了更多详细信息(以及代码):
它的 stackblitz 在这里:https://stackblitz.com/edit/angular-hw54xf.
在 ngx-bootstrap 日期选择器中似乎没有直接的选项来执行此操作 - 您需要添加自定义 CSS 或 JS 以隐藏日历中的年份或完全删除它删除适当的 DOM 元素。
更新:通过评论回答您的问题 - 我为您提供了一个使用 CSS 如何实现此效果的 hack。
将以下规则添加到组件的 CSS 文件中:
::ng-deep.bs-datepicker-head button.current:nth-child(3) {
display: none;
}
它选择日历中带有年份的按钮并将其隐藏。
然后您还需要指定应显示哪一年的月份。假设您想要当年的它,您可以按如下方式执行此操作:
你的组件 HTML:
<input
type="text"
#dp="bsDatepicker"
bsDatepicker
[(bsValue)]="chosenDate"
[minDate]="minDate"
[maxDate]="maxDate"
/>
您的组件的 TS:
export class AppComponent implements OnInit {
chosenDate: Date;
minDate: Date;
maxDate: Date;
ngOnInit() {
const currentDate = new Date();
this.minDate = new Date(currentDate.getFullYear(), 0, 1);
this.maxDate = new Date(currentDate.getFullYear(), 11, 31);
}
}
这样您就可以将只能选择的日期限制为当年的日期和月份。
请记住,这是一种 hack(解决方法),可能无法在未来的版本中使用,或者您可能需要对其进行调整以适应未来的版本。此外,我建议完善 CSS 规则以避免使用 ::ng-deep
,这是不推荐的,但它是一个单独的主题,您可以在其他地方找到关于该主题的更多信息,我只是想展示这个想法。
Stackblitz 示例:https://stackblitz.com/edit/Whosebug-51062003-usatzk(我基于比你可能使用的版本稍旧的 ngx-bootstrap,因为我在 Stackblitz 上找到了一些 ngx-bootstrap datepicker 示例所以我分叉它并只是更改以显示此解决方案,但它应该与您的情况相同或与此非常相似)
我在项目中使用了ngx-bootstrap datepicker
只需要选择日期和月份如下image/link
Sample Image To show only date and month like this I needed
我搜索了很多,大多数示例都是使用 BsDatePickerConfig 的 minMode 显示月份和年份。 我尝试将 minMode 设置为 'day'。它显示正常的 day/month/year 日历视图。 但是我只需要日期和月份,不需要年份
下面是我的代码:
<div class="row">
<div class="col-xs-12 col-12 col-md-4 form-group">
<input
type="text"
placeholder="Datepicker"
[bsConfig]="datePickerConfig"
class="form-control"
bsDatepicker
/>
</div>
</div>
和component.ts文件
datePickerConfig: Partial<BsDatepickerConfig>;
minMode: BsDatepickerViewMode = 'day';
constructor() {
this.datePickerConfig = Object.assign(
{},
{
containerClass: 'theme-dark-blue',
showWeekNumbers: false,
minMode: this.minMode,
}
);
}
有没有办法像我的问题一样配置 ngx-bootstrap 日期选择器? 要么 建议任何允许此功能的替代日期选择器。
提前感谢您的宝贵时间...
您可以使用 Angular Material 及其日期选择器,您可以在其中使用具有自定义格式的自定义提供程序:显示和解析来执行此任务。此处描述了更多详细信息(以及代码):
在 ngx-bootstrap 日期选择器中似乎没有直接的选项来执行此操作 - 您需要添加自定义 CSS 或 JS 以隐藏日历中的年份或完全删除它删除适当的 DOM 元素。
更新:通过评论回答您的问题 - 我为您提供了一个使用 CSS 如何实现此效果的 hack。
将以下规则添加到组件的 CSS 文件中:
::ng-deep.bs-datepicker-head button.current:nth-child(3) {
display: none;
}
它选择日历中带有年份的按钮并将其隐藏。
然后您还需要指定应显示哪一年的月份。假设您想要当年的它,您可以按如下方式执行此操作:
你的组件 HTML:
<input
type="text"
#dp="bsDatepicker"
bsDatepicker
[(bsValue)]="chosenDate"
[minDate]="minDate"
[maxDate]="maxDate"
/>
您的组件的 TS:
export class AppComponent implements OnInit {
chosenDate: Date;
minDate: Date;
maxDate: Date;
ngOnInit() {
const currentDate = new Date();
this.minDate = new Date(currentDate.getFullYear(), 0, 1);
this.maxDate = new Date(currentDate.getFullYear(), 11, 31);
}
}
这样您就可以将只能选择的日期限制为当年的日期和月份。
请记住,这是一种 hack(解决方法),可能无法在未来的版本中使用,或者您可能需要对其进行调整以适应未来的版本。此外,我建议完善 CSS 规则以避免使用 ::ng-deep
,这是不推荐的,但它是一个单独的主题,您可以在其他地方找到关于该主题的更多信息,我只是想展示这个想法。
Stackblitz 示例:https://stackblitz.com/edit/Whosebug-51062003-usatzk(我基于比你可能使用的版本稍旧的 ngx-bootstrap,因为我在 Stackblitz 上找到了一些 ngx-bootstrap datepicker 示例所以我分叉它并只是更改以显示此解决方案,但它应该与您的情况相同或与此非常相似)