Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.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

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
Javascript ngOnChanges不会在本机或移动web中触发。离子4_Javascript_Angular_Ionic Framework_Mobile_Ionic4 - Fatal编程技术网

Javascript ngOnChanges不会在本机或移动web中触发。离子4

Javascript ngOnChanges不会在本机或移动web中触发。离子4,javascript,angular,ionic-framework,mobile,ionic4,Javascript,Angular,Ionic Framework,Mobile,Ionic4,我有一个具有此模板的组件: <app-graph-grouped-vertical [results]="graphRecords" [series]="graphPredictions" [seriesColors]="predictionColors" [xAxis]="xAxis" ></app-graph-grouped-vertical&g

我有一个具有此模板的组件:

 <app-graph-grouped-vertical
      [results]="graphRecords"
      [series]="graphPredictions"
      [seriesColors]="predictionColors"
      [xAxis]="xAxis"
></app-graph-grouped-vertical>

图形组垂直组件中,我得到了以下信息:

export class GraphGroupedVerticalComponent extends GraphBaseComponent<GroupedResultDto>
  implements OnChanges, OnInit, OnDestroy, DoCheck {
...
 @Input() results!: GroupedResultDto[]

 ngOnChanges(changes: SimpleChanges){console.log('Triggered')}
...

}
导出类GraphGroupedVerticalComponent扩展GraphBaseComponent
实现OnChanges、OnInit、OnDestroy和DoCheck{
...
@输入()结果!:GroupedResultDto[]
ngOnChanges(更改:SimpleChanges){console.log('Triggered')}
...
}
因此,当我从计算机进入浏览器,父组件中的属性
graphRecords
发生更改时,一切正常,并且子组件中的
ngOnChanges
被触发。问题是,当我从移动浏览器或编译的本机应用程序使用应用程序时,它不会触发。要触发它,在
记录
发生更改后,我必须按下屏幕上的某些内容,任何内容(不是空白,而是交互元素。它不必与组件或该属性相关)

它发生在物理手机和模拟器、Android和iOS中

我甚至尝试过使用
ngDoCheck
,但它也不会触发。我有点绝望,有人知道会发生什么吗


我用的是离子4和角8,我花了一段时间才弄清楚到底发生了什么。事实证明,将新值分配给
记录的操作发生在
ngZone
之外。对于任何不熟悉这一点的人来说,区域就像一个运行进程的封闭环境,
ngZone
是Angular运行异步操作的地方,并将相应地更改UI

这也与此相反。如果在
ngZone
之外执行某些操作,Angular的ChangeDetection将不会侦听它,我们的UI也不会更改。幸运的是,您可以使用
ngZone.run()
强制在
ngZone
内部运行某些内容。您还可以在它之外运行繁重的操作,这样就不会不必要地刷新UI,从而优化您的应用程序

然而,我仍然不知道为什么这个特定的操作是在
ngZone
之外非自愿地执行的