Angular 点击选项卡时出现完整的日历初始化问题
Angular full calender init issue on tab click
我正在处理 angular7 项目并且遇到了完整日历的问题。
我想在选项卡上显示日历,但 angular 完整日历未在选项卡活动时初始化。
请参考以下截图
我正在使用 material 选项卡 https://material.angular.io/components/tabs/overview and for full calendar i have integrated https://github.com/fullcalendar/fullcalendar-example-projects/tree/master/angular 这个。
代码
约会-Calendar.Component.ts
export class AppointmentCalendarComponent implements OnInit {
@ViewChild('calendar', {static: true}) calendarComponent: FullCalendarComponent; // the #calendar in the template
calendarPlugins = [dayGridPlugin, timeGrigPlugin, interactionPlugin];
calendarWeekends = true;
calendarEvents: EventInput[] = [{"title":"Dr. Helen Jones 07:20 PM","start":"2019-07-31 19:20:00"},{"title":"Dr. Jonathan 07:20 PM","start":"2019-08-07 19:20:00"}];
constructor() { }
ngOnInit() {}
}
Appointments.component.ts
<mat-tab-group [selectedIndex]="selectedTab" [disableRipple]="true" animationDuration="0ms">
<mat-tab label = "List View">
<app-appointment-listing (selectTab)="getOutputval($event)" ></app-appointment-listing>
</mat-tab>
<mat-tab label = "Calendar">
<app-appointment-calendar (selectTab)="getOutputval($event)"></app-appointment-calendar>
</mat-tab>
</mat-tab-group>
约会-calendar.component.html
<div class="card card-box">
<div class="card-box-content">
<div class="row">
<div class="col-sm-12 text-right btn-wrap margin-btm20">
<a [routerLink]="['/appointment/create']" class="btn btn-primary">
<i class="fas fa-plus-circle"></i> Add New
</a>
</div>
</div>
<div class="row">
<div class="col-md-12 col-sm-12">
<full-calendar
#calendar
defaultView="dayGridMonth"
[header]="{
left: 'prev,next today',
center: 'title',
right: 'dayGridMonth,timeGridWeek,timeGridDay,listWeek'
}"
[plugins]="calendarPlugins"
[weekends]="calendarWeekends"
[events]="calendarEvents"
(dateClick)="handleDateClick($event)"
></full-calendar>
</div>
</div>
</div>
</div>
请推荐
我已经解决了问题,只需修复以下几点。
安装正确的插件
npm install --save @fullcalendar/timegrid @fullcalendar/interaction
在你的约会中导入-Calendar.Component.ts文件
从“@fullcalendar/timegrid”导入时间网格;
从“@fullcalendar/interaction”导入交互;
使用以下内容更新您的日历插件列表:
calendarPlugins = [dayGridPlugin, timeGrid, interaction];
经过调查我发现这个问题与css有关。所以我只是将 .fc-widget-content .fc-scroller {height: auto !important;} 放在 style.css 中并解决了问题
这是fullcalendar的一个功能。当日历不可见时,Fullcalendar 不会呈现日历。唯一的解决方案是在选项卡更改事件上手动呈现日历。
我正在处理 angular7 项目并且遇到了完整日历的问题。
我想在选项卡上显示日历,但 angular 完整日历未在选项卡活动时初始化。
请参考以下截图
我正在使用 material 选项卡 https://material.angular.io/components/tabs/overview and for full calendar i have integrated https://github.com/fullcalendar/fullcalendar-example-projects/tree/master/angular 这个。
代码
约会-Calendar.Component.ts
export class AppointmentCalendarComponent implements OnInit {
@ViewChild('calendar', {static: true}) calendarComponent: FullCalendarComponent; // the #calendar in the template
calendarPlugins = [dayGridPlugin, timeGrigPlugin, interactionPlugin];
calendarWeekends = true;
calendarEvents: EventInput[] = [{"title":"Dr. Helen Jones 07:20 PM","start":"2019-07-31 19:20:00"},{"title":"Dr. Jonathan 07:20 PM","start":"2019-08-07 19:20:00"}];
constructor() { }
ngOnInit() {}
}
Appointments.component.ts
<mat-tab-group [selectedIndex]="selectedTab" [disableRipple]="true" animationDuration="0ms">
<mat-tab label = "List View">
<app-appointment-listing (selectTab)="getOutputval($event)" ></app-appointment-listing>
</mat-tab>
<mat-tab label = "Calendar">
<app-appointment-calendar (selectTab)="getOutputval($event)"></app-appointment-calendar>
</mat-tab>
</mat-tab-group>
约会-calendar.component.html
<div class="card card-box">
<div class="card-box-content">
<div class="row">
<div class="col-sm-12 text-right btn-wrap margin-btm20">
<a [routerLink]="['/appointment/create']" class="btn btn-primary">
<i class="fas fa-plus-circle"></i> Add New
</a>
</div>
</div>
<div class="row">
<div class="col-md-12 col-sm-12">
<full-calendar
#calendar
defaultView="dayGridMonth"
[header]="{
left: 'prev,next today',
center: 'title',
right: 'dayGridMonth,timeGridWeek,timeGridDay,listWeek'
}"
[plugins]="calendarPlugins"
[weekends]="calendarWeekends"
[events]="calendarEvents"
(dateClick)="handleDateClick($event)"
></full-calendar>
</div>
</div>
</div>
</div>
请推荐
我已经解决了问题,只需修复以下几点。
安装正确的插件
npm install --save @fullcalendar/timegrid @fullcalendar/interaction
在你的约会中导入-Calendar.Component.ts文件
从“@fullcalendar/timegrid”导入时间网格;
从“@fullcalendar/interaction”导入交互;
使用以下内容更新您的日历插件列表:
calendarPlugins = [dayGridPlugin, timeGrid, interaction];
经过调查我发现这个问题与css有关。所以我只是将 .fc-widget-content .fc-scroller {height: auto !important;} 放在 style.css 中并解决了问题
这是fullcalendar的一个功能。当日历不可见时,Fullcalendar 不会呈现日历。唯一的解决方案是在选项卡更改事件上手动呈现日历。