Я создал календарь в своем приложении Angular и пытаюсь передать указанную c дату, когда пользователь нажимает на дочерний компонент. Дочерний компонент объявлен, как показано ниже:
<app-day-view [date]="dateToPass | date:'yyyy-MM-dd'"></app-day-view>
И дочерний компонент настроен так, чтобы правильно также принимать свойство ввода:
import { Component, OnInit, Input, Output } from '@angular/core';
import { DateHandlerService } from './../../_services/date-handler.service';
declare var $: any;
@Component({
selector: 'app-day-view',
templateUrl: './day-view.component.html',
styleUrls: ['./day-view.component.css']
})
export class DayViewComponent implements OnInit {
@Input() date;
dateString: string;
constructor(public dateHandler: DateHandlerService) { }
ngOnInit() {
$('#dayModal').on('shown.bs.modal', this.getDateString);
}
getDateString() {
//this.dateString = this.dateHandler.convertToOutDate(this.date);
}
}
Предполагается, что я нажимаю один дней в моем календаре и <app-day-view>
, который является модальным, открывается, берет dateToPass
, который, как я подтвердил, уже сохраняет правильную дату, и отправляет ее в дочерний компонент. Этот шаблон не выдает никаких ошибок, но к тому времени, когда я проверяю дату внутри DayViewComponent
, она не определена.
Я предполагал, что это проблема, вызванная дочерним компонентом, существующим в родительском компоненте, прежде чем открыт. Свойство ввода даты технически будет неопределенным, пока я не нажму на день в календаре, после чего оно внезапно станет определенным, но я не уверен, что свойства ввода Angular работают так. Чтобы обойти это, я использовал JQuery для проверки модального события shown.bs.modal
, и я пытаюсь использовать дату только после того, как это событие сработало, но дата все еще кажется неопределенной.