Итак, я использую angular-calendar и у меня есть диалоговое окно, когда я нажимаю кнопку, сейчас я добавляю объект случайного события в свой массив событий calendarservice для целей тестирования:
onButtonClick() {
var date = addHours(new Date(), 2)
this.calendarService.onCreateEvent('test added',date )
console.log(date)
}
, который добавляетэто к моей внедренной службе:
export class CalendarService {
events: CalendarEvent[] = [
{ title: "my test event 1", start: new Date() },
{ title: "my test event 2", start: addDays(new Date(), 1) }
];
Прямо сейчас я использую ngOnit для установки массива локальных событий в компоненте:
export class ScheduleCalendarComponent implements OnInit{
constructor(
private calendarService: CalendarService,
public dialog: MatDialog
) {}
view: string = "month";
viewDate: Date = new Date();
events: CalendarEvent[] = [];
refresh: Subject<any> = new Subject();
ngOnInit(): void {
this.events = this.calendarService.events;
}
Так что сейчас он вытягивает правильные события, но когда ядобавить событие, которое не обновляет DOM, потому что я обновляю только массив OnInit, поэтому только после смены страниц и возвращения, используя массив событий calendarservice, он работает, если я меняю метод обновления:
onCreateEvent(title: string, start: any) {
this.events = [...this.events, {title: title, start: start}]
}
Я использую этои добавьте его в календарь следующим образом:
<mwl-calendar-day-view
*ngSwitchCase="'day'"
[viewDate]="viewDate"
[events]="this.calendarService.events"
(hourSegmentClicked)="openDialog()"
>
</mwl-calendar-day-view>
но как мне сделать это, используя собственный массив компонентов, а не массив служб?И лучше ли для компонента использовать свой собственный массив, как это сделал max, а не просто брать прямо из сервиса?
Я бы хотел сделать это, используя массив компонентов, но он не будет обновляться при нажатии кнопки:
<mwl-calendar-day-view
*ngSwitchCase="'day'"
[viewDate]="viewDate"
[events]="events"
(hourSegmentClicked)="openDialog()"
>
</mwl-calendar-day-view>
Надеюсь, что это имеет смысл
Спасибо вам!