Планировщик FullCalendar — тип «строка» не может быть назначен типу «EmitterInterface []

Я пытаюсь реализовать FullCalendar Scheduler в Angular 2, и я выполнил следующие шаги:

Установил необходимую зависимость, как показано ниже:

"dependencies": {
   "fullcalendar": "^3.8.0",
    "fullcalendar-scheduler": "^1.9.1",
    "jquery": "^3.2.1",
    "moment": "^2.20.1"
  },
  "devDependencies": {
    "@types/jquery": "^2.0.47"
  }

Обновлен angular-cli.json, как показано ниже -

"styles": [
            "styles.css",
            "../node_modules/bootstrap/dist/css/bootstrap.min.css",
            "../node_modules/fullcalendar/dist/fullcalendar.min.css",
            "../node_modules/fullcalendar-scheduler/dist/scheduler.min.css",
            "../node_modules/primeng/resources/primeng.min.css",
            "../node_modules/primeng/resources/themes/omega/theme.css",
            "../node_modules/font-awesome/css/font-awesome.min.css"
        ],
        "scripts": ["../node_modules/jquery/dist/jquery.js",
            "../node_modules/moment/min/moment.min.js",
            "../node_modules/fullcalendar/dist/fullcalendar.js",
             "../node_modules/fullcalendar-scheduler/dist/scheduler.min.js"
        ],

Я импортировал зависимости в main.ts и module.ts -

main.ts -

import * as jQuery from "jquery";
(window as any).$ = (window as any).jQuery = jQuery;

app.component.html —

<div id='calendar'></div>

app.component.ts

import { Component } from '@angular/core';
import 'fullcalendar';
import 'fullcalendar-scheduler';
declare let $: any;

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.css']
})
export class AppComponent {
  ngOnInit() {
    $('#calendar').fullCalendar({});
  }
}

Я решил проблему @type/jquery, как указано в ошибке jQuery, однако я не могу скомпилировать код, который он дает ниже, упомянутая ошибка -

ERROR in /Users/jeet/Documents/Development/frontend/node_modules/fullcalendar/dist/fullcalendar.d.ts (347,6): Type 'string' is not assignable to type 'EmitterInterface[]'.
ERROR in /Users/jeet/Documents/Development/frontend/node_modules/fullcalendar/dist/fullcalendar.d.ts (124,27): ']' expected.
ERROR in /Users/jeet/Documents/Development/frontend/node_modules/fullcalendar/dist/fullcalendar.d.ts (125,28): ']' expected.
ERROR in /Users/jeet/Documents/Development/frontend/node_modules/fullcalendar/dist/fullcalendar.d.ts (125,33): ';' expected.
ERROR in /Users/jeet/Documents/Development/frontend/node_modules/fullcalendar/dist/fullcalendar.d.ts (126,28): ']' expected.
ERROR in /Users/jeet/Documents/Development/frontend/node_modules/fullcalendar/dist/fullcalendar.d.ts (126,33): ';' expected.

Полную версию ошибки вы найдете здесь. Я уже просмотрел приведенные ниже темы и ресурсы, и они, похоже, не решают проблему -

https://github.com/fullcalendar/fullcalendar/issues/3991 fullcalendar и Angular 5

Я прошу вашей помощи относительно того же.


person Jeet    schedule 02.03.2018    source источник
comment
Из вашего angular-cli.json удалите импорт, связанный с Primeng, я предполагаю, что это вызывает эту проблему.   -  person Manzurul    schedule 02.03.2018
comment
Спасибо за ответ, однако после удаления ` ../node_modules/primeng/resources/primeng.min.css,` `../node_modules/primeng/resources/themes/omega/theme.css` это не помогает вообще. Ошибка остается прежней.   -  person Jeet    schedule 02.03.2018
comment
Согласно документам полного календаря, вы должны использовать этот способ let containerEl: JQuery = $('#calendar'); containerEl.fullCalendar({ // здесь параметры }); Попробуйте это, и если это не сработает, я посмотрю на это больше после моего офиса.   -  person Manzurul    schedule 02.03.2018
comment
Большое спасибо, что нашли время, чтобы изучить его, не могли бы вы сообщить мне, где именно я должен поместить вышеупомянутый фрагмент кода? Также было бы полезно, если бы у вас был какой-то пример кода.   -  person Jeet    schedule 02.03.2018
comment
внутри ngOnit вместо этой строки $('#calendar').fullCalendar({}); поставьте вышеуказанный и посмотрите, работает ли он.   -  person Manzurul    schedule 02.03.2018
comment
Я поместил это в ngOnit, но это не сработало, я не думаю, что это должно быть там, потому что jQuery не является объявленной переменной, как и containerEl.   -  person Jeet    schedule 02.03.2018
comment
См. ниже. Я разместил для вас ответ, а также включил рабочую ссылку на репо.   -  person Manzurul    schedule 05.03.2018


Ответы (1)


Это должно сработать для вас. Также вы можете посмотреть репозиторий git здесь https://gitlab.com/haque.mdmanzurul/ng-fullcalendar

app.component.ts

import * as jQuery from 'jquery';
(window as any).jQuery = (window as any).$ = jQuery; // This is needed to resolve issue.
import { Component, OnInit } from '@angular/core';
import 'fullcalendar';

 @Component({
   selector: 'app-root',
   templateUrl: './app.component.html',
   styleUrls: ['./app.component.css']
 })
 export class AppComponent implements OnInit {
 title = 'My Calendar';

 ngOnInit() {
   $('#calendar').fullCalendar({});
 }
}

угловой-cli.json:

"styles": [
    "styles.css",
    "../node_modules/fullcalendar/dist/fullcalendar.min.css"
  ],
  "scripts": [
    "../node_modules/fullcalendar/dist/fullcalendar.js"
  ],

пакет.json

{
  "name": "mycalendar",
  "version": "0.0.0",
  "license": "MIT",
  "scripts": {
  "ng": "ng",
  "start": "ng serve",
  "build": "ng build",
  "test": "ng test",
  "lint": "ng lint",
  "e2e": "ng e2e"
},
"private": true,
"dependencies": {
 "@angular/animations": "^4.2.4",
 "@angular/common": "^4.2.4",
 "@angular/compiler": "^4.2.4",
 "@angular/core": "^4.2.4",
 "@angular/forms": "^4.2.4",
 "@angular/http": "^4.2.4",
 "@angular/platform-browser": "^4.2.4",
 "@angular/platform-browser-dynamic": "^4.2.4",
 "@angular/router": "^4.2.4",
 "core-js": "^2.4.1",
 "rxjs": "^5.4.2",
 "zone.js": "^0.8.14",
 "fullcalendar": "^3.4.0",
 "jquery": "^3.2.1",
 "moment": "^2.19.1"
 },
"devDependencies": {
 "@angular/cli": "1.4.9",
 "@angular/compiler-cli": "^4.2.4",
 "@angular/language-service": "^4.2.4",
 "@types/jasmine": "~2.5.53",
 "@types/jasminewd2": "~2.0.2",
 "@types/jquery": "^3.2.7",
 "@types/node": "~6.0.60",
 "codelyzer": "~3.2.0",
 "jasmine-core": "~2.6.2",
 "jasmine-spec-reporter": "~4.1.0",
 "karma": "~1.7.0",
 "karma-chrome-launcher": "~2.1.1",
 "karma-cli": "~1.0.1",
 "karma-coverage-istanbul-reporter": "^1.2.1",
 "karma-jasmine": "~1.1.0",
 "karma-jasmine-html-reporter": "^0.2.2",
 "protractor": "~5.1.2",
 "ts-node": "~3.2.0",
 "tslint": "~5.7.0",
 "typescript": "~2.3.3"
 }
}
person Manzurul    schedule 05.03.2018
comment
Большое спасибо, что нашли время, чтобы помочь мне. Но вы видите, что речь идет не столько о полном календаре, сколько о полном планировщике календаря, когда вы включаете полный планировщик календаря, он не работает и выдает ошибку, опубликованную в исходном сообщении. - person Jeet; 05.03.2018
comment
Я только что обновил репозиторий git, который я предоставил выше, а также включил планировщик, и он работает нормально. Вы можете загрузить обновления и попробовать запустить снова. Надеюсь, это сработает. - person Manzurul; 05.03.2018
comment
Большое спасибо, хотя моя проблема все еще не устранена, но, по крайней мере, у меня есть один рабочий пример для fullcalendar-scheduler большое спасибо. Я думаю, что у этого есть некоторый конфликт с primeng, и я понятия не имею, как заставить его работать с primeng. Но тем не менее это принятый ответ. Спасибо еще раз. - person Jeet; 05.03.2018
comment
Пожалуйста. И до сих пор я работал с Primeng, который называется schedule, который представляет собой совершенно другой компонент, использующий fullcalender сзади, если вы используете Primeng, вам нужно использовать код другого типа, не вызывая jquery, и у Primeng есть довольно хорошие документы по этому вопросу. . Я сделал jqeury, потому что думал, что вы используете обычный вызов типа jquery. - person Manzurul; 05.03.2018