我正在以有角度的方式工作2.我面对的是,我从父母那里调用子组件的功能。和子函数更新我最初加载html的数据集。但是当我站在相同的html并再次调用该函数时,它在控制台中显示数据集已加载新数据但未加载其html。 完整方案: 我的标题部分有一个搜索栏。从重定向到结果页面,并调用其显示查询数据的功能。但是当我已经搜索过查询并站在结果页面上时。新数据查询将再次调用该函数,并将更新数据集。但是组件不会根据该数据集重新加载html。我该如何重装? 有什么建议。? 这是代码示例。 我的 header.ts
Search(){
localStorage.setItem('val',JSON.stringify(this.query));
this.router.navigate(['/results']);
this.mobiles.ngOnInit();
}
}
和 resuls.ts
ngOnInit() {
this.query=JSON.parse(localStorage.getItem('val'));
alert(this.query)
this.httpService.searchGeneric(this.query,1).subscribe(
data => {
this.Getspecs = data;
this.count=data['totalItems'];
this.ref.detectChanges();
this.ref.reattach();
console.log(data)
}
);
为什么新的更改没有出现在结果组件的html中?谁对此有任何想法?需要任何帮助。感谢。
答案 0 :(得分:0)
这是Angular的工作方式。
您正在使用相同的功能,这意味着您将再次路由到同一个组件。
如果您在组件上并再次重新加载相同的组件,Angular将不会刷新您的绑定。它的性能改进相当于不再为已经加载的组件刷新绑定。
但是,如果需要在重新加载时显式更改绑定,angular会提供一种方法。您可以使用<?php if(!empty($_POST['phoneNumber'])){ ?>
<span class="phoneIcon"><?php $phoneIcon = ($_POST['phoneIcon']); echo $phoneIcon;?> </span>
<?php } ?>
<span class="phoneNumber"><?php $phoneNumber = ($_POST['phoneNumber']); echo $phoneNumber;?></span>
observable并在路由更改时订阅params
。此订阅中的任何操作都将强制更改绑定。
Angular官方文档中的更多信息here。