【发布时间】:2020-02-29 11:13:28
【问题描述】:
我在我的 Angular 应用程序中制作了一个日历,我试图将用户单击的特定日期传递给子组件。子组件声明如下:
<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 事件,我只尝试使用该事件触发后的日期,但日期似乎仍然未定义。
【问题讨论】:
标签: angular data-binding