События обновления полного календаря Angular2

Я использую angular2 с angular2-fullcalendar. В моем проекте я беру данные из бэкэнда. Теперь мой вопрос: когда я добавляю событие, выбирая даты, я хочу, чтобы оно отображалось в календаре при успешной отправке данных без перезагрузки страницы. Раньше я использовал $('#myCalendar').fullCalendar('renderEvents', newEvents, true);, чтобы выполнить работу. Но я не хочу использовать jquery в проекте angular. Есть ли другие альтернативы для этого, кроме использования jquery. Пожалуйста, помогите.


person Vikhyath Maiya    schedule 29.06.2017    source источник
comment
fullCalendar требует jQuery. Поэтому, если вы удалите jQuery, вы не сможете использовать fullCalendar.   -  person ADyson    schedule 29.06.2017
comment
тогда есть ли альтернатива angular? Или целесообразно использовать jquery с угловым   -  person Vikhyath Maiya    schedule 29.06.2017
comment
нет, если вы хотите использовать fullCalendar. Вы можете использовать другие продукты календаря, я не знаю, вы можете сами погуглить. Какая у вас проблема с jQuery? Это очень полезно.   -  person ADyson    schedule 29.06.2017


Ответы (1)


Да, ViewChild вместе с ElementRef

@import { ViewChild, ElementRef } from '@angular/core';

@ViewChild('calendar') myCalendar: ElementRef;
myHtmlElement: HTMLElement;

ngOnInit() {
    this.myHtmlElement = this.myCalendar.nativeElement;
}

В вашем HTML:

<!-- Where you actual calendar is, add #calendar to your tag -->
<div id="myCalendar" #calendar></div>
person Community    schedule 29.06.2017
comment
То же, что и JQuery: когда вы используете $('#myCalendar'), он извлекает элемент HTML. Здесь у вас есть доступ к нему через this.myHtmlElement. Все, что вам нужно сделать, это this.myHtmlElement['fullCalendar']('renderEvents', newEvents, true) - person ; 29.06.2017
comment
@trichetriche когда вы используете $('#myCalendar'), он извлекает элемент HTML. Нет, это не так. Возвращаемое значение этого оператора является объектом jQuery. Элемент HTML — это всего лишь одно свойство внутри этого объекта. Вы не можете вызывать fullCalendar() для HTML-элемента, потому что fullCalendar() — это метод расширения jQuery. fullCalendar реализован как расширение jQuery, поэтому для работы требуется jQuery. Без него невозможно пользоваться календарем. - person ADyson; 29.06.2017
comment
Спасибо, что прояснили это; Я этого не знаю. Но тем не менее, вы можете по крайней мере сделать $(this.myHtmlElement) с этим. - person ; 29.06.2017
comment
@trichetriche да, но тогда это использует jQuery, что противоречит сути вашего обходного пути. - person ADyson; 29.06.2017
comment
Четко. Но это немного проще, так как вам не нужно, чтобы идентификатор и селектор jquery совпадали. И если вы не соответствуете #calendar с ViewChild, вы сразу получите ошибку. - person ; 29.06.2017
comment
поэтому вывод заключается в том, что использование jquery нельзя пропустить ... верно? - person Vikhyath Maiya; 29.06.2017
comment
Похоже на то... Разве для него не сделали машинописный указатель? - person ; 29.06.2017