Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 角度5-角度服务不';t在'Modal'模式中显示数据`_Angular_Modal Dialog_Angular Services - Fatal编程技术网

Angular 角度5-角度服务不';t在'Modal'模式中显示数据`

Angular 角度5-角度服务不';t在'Modal'模式中显示数据`,angular,modal-dialog,angular-services,Angular,Modal Dialog,Angular Services,我正在使用一个组件和服务来处理我的应用程序中的modals。 在download.component.ts中,我有一个打开模式窗口的方法 下载.component.ts 构造函数(私有modalService:modalService){} 公共openModalProperty(id:string,nameFile:string){ this.properties=[]; 此.propertyService.byFile(+id).subscribe( 数据=>{ 这个属性=数据; if(th

我正在使用一个组件和服务来处理我的应用程序中的modals。 在
download.component.ts
中,我有一个打开模式窗口的方法

下载.component.ts

构造函数(私有modalService:modalService){}
公共openModalProperty(id:string,nameFile:string){
this.properties=[];
此.propertyService.byFile(+id).subscribe(
数据=>{
这个属性=数据;
if(this.properties&&this.properties.length>0){
this.titleFile=nameFile;
此.openModal(“模式下载”);
}否则{
此.属性(此.标题文件);
}
},
_ => {
this.processError();
}
);
}
公共OpenModel(id:字符串){
this.modalService.open(id);
}
properties
对象的数组,其数据显示在模式窗口中。
模板如下:

下载.component.html


{{property.name}}:{{property.value}
localhost
中,它工作正常,我点击
按钮
,它会显示带有相应数据的
模式
,但当我将其上传到生产时,模式窗口会打开,但物业安排的信息不会显示,或者只有当我按键盘上的任意键或单击鼠标时,它才会加载信息

会发生什么


谢谢。

为了确保检测不是问题,在构造函数中添加
cdr
作为组件中的依赖项,然后在
this.modalService.open(id)之后添加
setTimeout(()=>this.cdr.detectChanges())

出于教育方面的原因,我将尝试解释

您触发模式服务并打开模式服务

模态正在打开,但尚未触发值的更改检测,因为值在创建模态实例之前已更改

这就是为什么在左键或右键单击后,一切正常。这是因为您通过单击触发了组件以检查检测,并通过触发的组件对所有子组件进行检测


我在这里发表了我的评论,因为这似乎是正确的答案。

似乎存在更改检测问题,您是否有任何组件
OnPush
?在模式打开后,可能尝试手动检查更改
?我没有OnPush,但我不知道手动检查更改意味着什么:(可能不是这样,但是:。仍然值得学习。您的控制台中有任何错误吗?谢谢,我会检查它,我没有发现任何错误,模式打开,模式显示为空,但按任意键都会显示信息。为确保
检测
不是问题,请将
cdr
添加为
ChangeDetectionRef
中将构造函数作为组件中的依赖项,然后在'this.modalService.open(id);'之后添加
setTimeout(()=>this.cdr.detectChanges())
。解决方案肯定是正确的,我正在测试,一切都很好。