热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

开发笔记:如何*保存*角度材料模态对话框的结果?

篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何*保存*角度材料模态对话框的结果?相关的知识,希望对你有一定的参考价值。

篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何*保存*角度材料模态对话框的结果?相关的知识,希望对你有一定的参考价值。



我有一个组件打开一个模态对话框,让用户输入两个日期。然后我想将这两个日期保存到组件后面的数据库模型中,但是我无法在何时何地获取这些结果。

要清楚:我当前可以在主要组件的模板中看到对话框结果作为两个日期,但我想知道,在...我的主要组件中的某些方法...当对话框关闭且日期为不再为空 - 所以我可以将它们保存到数据库中。

我的主要组件模板有一个带有onClick事件的按钮:

flag Result from dialog: {{ dateRangeArray }}

主要组件实现onClick事件:

onClickGetDates(appt) {
this.dialogService
.confirmDateRange('Get Dates', 'Enter two dates:',
appt.beginDate, appt.endDate)
.subscribe(res => this.dateRange = res);
.
.
// I would like to now save the dateRange result to my database, but at this point, result is [null,null], so the code below does nothing (except null out the dates):
appt.beginDate = dateRange[0];
appt.endDate = dateRange[1];
this.apptdata.updateAppt(appt);
}

这是在Dialog Service中定义的confirmDateRange,它实际显示了对话框:

public confirmDateRange(title: string, message: string, begin: Date, end: Date): Observable {
let dialogRef: MatDialogRef;
dialogRef = this.dialog.open(ConfirmDialogComponent);
dialogRef.componentInstance.title = title;
dialogRef.componentInstance.message = message;
dialogRef.componentInstance.beginDate = begin;
dialogRef.componentInstance.endDate = end;
return dialogRef.afterClosed();
}

对话框组件:

export class ConfirmDialogComponent implements OnInit {
public title: string;
public message: string;
public beginDate: Date;
public endDate: Date;
constructor(public dialogRef: MatDialogRef) { }
ngOnInit() {
}

对话框的模板:

{{ title }}




{{ message }}


















在对话框中单击“确定”后,我可以在主要组件的模板中看到带有两个日期的结果数组,如下所示:Result from dialog: {{ dateRangeArray }}。试图在onClickGetDates中访问相同的结果是“太快了”,结果是一个空数组...那么,where / when是在主要组件中查看结果的适当位置?

我觉得我错误地使用了对话框的AfterClose()事件,并且我应该能够在事件被触发后检索结果,但是我仍然对Angular太过绿色以了解我做错了什么。


答案

试试这个

onClickGetDates(appt) {
this.dialogService
.confirmDateRange('Get Dates', 'Enter two dates:',
appt.beginDate, appt.endDate)
.subscribe(res =>
{this.dateRange = res;
//Set the appt's properties inside the subscribe
appt.beginDate = this.dateRange[0];
appt.endDate = this.dateRange[1];
this.apptdata.updateAppt(appt);
});

另一答案

Use @Output() to send dates from inner component to outer component and implement a function that call on Ok button and emit that data from that function like :
`@Output() respOnse= new EventEmitter();
onOkClicked()
{
this.response.next({beginDate : beginDate , endDate: endDate});
this.dialogRef.close();
}
onCancelClicked()
{
this.dialogRef.close();
}
confirmDateRange(title: string, message: string,appt): Observable {
let dialogRef: MatDialogRef;
dialogRef = this.dialog.open(ConfirmDialogComponent);
dialogRef.componentInstance.title = title;
dialogRef.componentInstance.message = message;
dialogRef.componentInstance.beginDate = appt.begin;
dialogRef.componentInstance.endDate = appt.end;
dialogRef.componentInstance.response.subscribe(res : any => {
appt.begin = res.beginDate;
appt.end = res.endDate;
});
}
onClickGetDates(title:string , message :string , appt) {
this.confirmDateRange(title,message,appt);
}
`


推荐阅读
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 第一步:PyQt4Designer设计程序界面该部分设计类同VisvalStudio内的设计,改下各部件的objectName!设计 ... [详细]
  • [译]技术公司十年经验的职场生涯回顾
    本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ... [详细]
  • 使用Ubuntu中的Python获取浏览器历史记录原文: ... [详细]
  • 解决Cydia数据库错误:could not open file /var/lib/dpkg/status 的方法
    本文介绍了解决iOS系统中Cydia数据库错误的方法。通过使用苹果电脑上的Impactor工具和NewTerm软件,以及ifunbox工具和终端命令,可以解决该问题。具体步骤包括下载所需工具、连接手机到电脑、安装NewTerm、下载ifunbox并注册Dropbox账号、下载并解压lib.zip文件、将lib文件夹拖入Books文件夹中,并将lib文件夹拷贝到/var/目录下。以上方法适用于已经越狱且出现Cydia数据库错误的iPhone手机。 ... [详细]
  • 本文介绍了在使用Laravel和sqlsrv连接到SQL Server 2016时,如何在插入查询中使用输出子句,并返回所需的值。同时讨论了使用CreatedOn字段返回最近创建的行的解决方法以及使用Eloquent模型创建后,值正确插入数据库但没有返回uniqueidentifier字段的问题。最后给出了一个示例代码。 ... [详细]
  • 带添加按钮的GridView,item的删除事件
    先上图片效果;gridView无数据时显示添加按钮,有数据时,第一格显示添加按钮,后面显示数据:布局文件:addr_manage.xml<?xmlve ... [详细]
  • 本文介绍了设计师伊振华受邀参与沈阳市智慧城市运行管理中心项目的整体设计,并以数字赋能和创新驱动高质量发展的理念,建设了集成、智慧、高效的一体化城市综合管理平台,促进了城市的数字化转型。该中心被称为当代城市的智能心脏,为沈阳市的智慧城市建设做出了重要贡献。 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 本文详细介绍了MysqlDump和mysqldump进行全库备份的相关知识,包括备份命令的使用方法、my.cnf配置文件的设置、binlog日志的位置指定、增量恢复的方式以及适用于innodb引擎和myisam引擎的备份方法。对于需要进行数据库备份的用户来说,本文提供了一些有价值的参考内容。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • Android源码中的Builder模式及其作用
    本文主要解释了什么是Builder模式以及其作用,并结合Android源码来分析Builder模式的实现。Builder模式是将产品的设计、表示和构建进行分离,通过引入建造者角色,简化了构建复杂产品的流程,并且使得产品的构建可以灵活适应变化。使用Builder模式可以解决开发者需要关注产品表示和构建步骤的问题,并且当构建流程发生变化时,无需修改代码即可适配新的构建流程。 ... [详细]
  • Java图形化计算器设计与实现
    本文介绍了使用Java编程语言设计和实现图形化计算器的方法。通过使用swing包和awt包中的组件,作者创建了一个具有按钮监听器和自定义界面尺寸和布局的计算器。文章还分享了在图形化界面设计中的一些心得体会。 ... [详细]
author-avatar
阿悅11
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有