События, извлеченные из базы данных, не будут отображаться в Angular 8 fullcalendar - PullRequest
0 голосов
/ 18 марта 2020

Я использую fullcalendar в проекте Angular 8. Я пытаюсь получить события из sql дБ. События загружаются в массив, однако они не отображаются в календаре. Если я жестко закодирую события в том же формате в массиве событий, они отображаются так, как и предполагалось

Вот мой компонент .ts

import { Component, Input, OnInit } from '@angular/core';
import { Router } from '@angular/router';
import dayGridPlugin from '@fullcalendar/daygrid';
import { Subject } from 'rxjs';
import { first } from 'rxjs/operators';
import { environment } from '../../environments/environment';
import { ICalendarHomework } from '../interfaces/ICaledarHomework';
import { IUser } from '../interfaces/IUser';
import { AuthService } from '../shared/services/auth/auth.service';
import { HomeworkService } from '../shared/services/homework/homework.service';
import { UserService } from '../shared/services/user/user.service';

@Component({
  selector: 'app-home',
  templateUrl: './home.component.html',
  styleUrls: ['./home.component.scss'],
})
export class HomeComponent implements OnInit {

  loading = false;
  currentUser: IUser;
  userFromApi: IUser;
  navLinks: any[];
  activeLinkIndex = -1;
  calendarEvents: ICalendarHomework[];
  homeworkEvent: any;
  appUrl: string;
  apiUrl: string;
  userId: number;
  homeworkEvents: any[];
  calendarPlugins = [dayGridPlugin];

ngOnInit() {
    this.userId = this.currentUser.userId;
    this.loading = true;
    this.userService.getById(this.userId)
      .pipe(first())
      .subscribe(user => {
        this.loading = false;
        this.userFromApi = user;
      });
    this.router.events.subscribe((res) => {
      this.activeLinkIndex = this.navLinks.indexOf(
        this.navLinks.find(
          tab => tab.link === '.' + this.router.url));
    });
    this.calendarEvents = [];
    this.homeworkService.getCalendarHomeworksByUser(this.userId)
      .subscribe(data => {
        this.homeworkEvents= data;

        this.homeworkEvents.forEach(homework => {

          var yearAssigned = homework.assignDate.toString().substring(0, 4);
          var monthAssigned = homework.assignDate.toString().substring(5, 7);
          var dayAssigned = homework.assignDate.toString().substring(8, 10);
          var yearDue = homework.dueDate.toString().substring(0, 4);
          var monthDue = homework.dueDate.toString().substring(5, 7);
          var dayDue = homework.dueDate.toString().substring(8, 10);
          var dateAssigned = yearAssigned + "-" + monthAssigned + "-" + dayAssigned;
          var dateDue = yearDue + "-" + monthDue + "-" + dayDue;
          let homeworkEvent: any = {
            title: homework.assignment,
            start: dateAssigned,
            end: dateDue
          };
          this.calendarEvents.push(homeworkEvent);
        });
      })
  }

Любой мой компонент. html

<full-calendar [events] = "calendarEvents" defaultView="dayGridMonth" [plugins]="calendarPlugins"></full-calendar>```
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...