这有点难以描述,因为有多个(错误的)结果,我只是不知道问题所在。但是,预期的结果很明确,如果遗漏了任何内容,我可以更新问题。
显示个人资料详细信息(父级)时,应通过更改路径/profile/id
中的参数来导航到另一个个人资料详细信息。因此,我订阅了the accepted answer of this question中提到的param。
// PARENT
constructor(private _route: ActivatedRoute) {
this.profileId = _route.snapshot.params['id'];
}
ngOnInit() {
this._route.params.subscribe(params => {
this.profileId = params['id'];
this.getResultByAsyncFunctionParent();
});
}
配置文件详细信息存在于一些HTML代码和一些子代中。父更新中的所有数据,但子中的代码不更新(应更新)。大多数孩子都使用相同的id
,并使用@Input
和ngOnChanges()
向下传递。我可以通过调试应用程序的流程来确认是否使用了正确的id
来获取预期的数据,并且调用了所有需要的方法。
// CHILD
@Input() childprofileId: string;
ngOnChanges(changes: SimpleChanges) {
if (changes['childprofileId']) {
if (this.childprofileId != null) {
this.getResultByAsynFunctionChild();
}
}
}
Parent使用HTML中的Child,如
<app-projectview [childprofileId]="profileId"></app-projectview>
即使Child的模型发生变化,视图也不会更新。 如何强制更新子项(无需导航到空白页面并导航回来或类似的东西)?我已尝试ApplicationRef.tick()
中提到的NgZone.run(callback)
,ChangeDetectorRef.detectChanges()
和// CHILD
getResultByAsynFunctionChild(): void {
this._planningService.getCollection().subscribe(
(toReturnPlanning: Planning[]) => {
this.planning = toReturnPlanning;
if (this.planning != null) {
... // Chart data logic, assign planningData in data
}
// Reassign the new data in the chart
this.barChartData[0].data = data;
}
});
}
,但这些似乎并不符合我的情况。
显示的结果不是一个,而是四个可能(错误),我认为这与我的异步功能有关。但是,解决问题应该与这些功能无关。
我们首先像所描述的情况一样导航,从一个配置文件细节导航到另一个。
the accepted answer of this question
{{1}}
修改