为什么在更新角度2中的数据集后DOM没有更新?

时间:2017-06-14 06:09:53

标签: angular typescript

我正在以有角度的方式工作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中?谁对此有任何想法?需要任何帮助。感谢。

1 个答案:

答案 0 :(得分:0)

这是Angular的工作方式。

您正在使用相同的功能,这意味着您将再次路由到同一个组件。

如果您在组件上并再次重新加载相同的组件,Angular将不会刷新您的绑定。它的性能改进相当于不再为已经加载的组件刷新绑定。

但是,如果需要在重新加载时显式更改绑定,angular会提供一种方法。您可以使用<?php if(!empty($_POST['phoneNumber'])){ ?> <span class="phoneIcon"><?php $phoneIcon = ($_POST['phoneIcon']); echo $phoneIcon;?>&nbsp;</span> <?php } ?> <span class="phoneNumber"><?php $phoneNumber = ($_POST['phoneNumber']); echo $phoneNumber;?></span> observable并在路由更改时订阅params。此订阅中的任何操作都将强制更改绑定。

Angular官方文档中的更多信息here