Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/72.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 将数据从服务传递到我的组件后,该组件不会';你不能呈现这些变化吗?_Angular - Fatal编程技术网

Angular 将数据从服务传递到我的组件后,该组件不会';你不能呈现这些变化吗?

Angular 将数据从服务传递到我的组件后,该组件不会';你不能呈现这些变化吗?,angular,Angular,我有一个包含两个阵列的服务: activeUsers: { name: string; id: number }[] = [ { name: "Jimmy", id: 0 }, { name: "Jaden", id: 1 }, ]; inactiveUsers: { name: string; id: number }[] = [ { name: "Heiji", id: 2 }, { name:

我有一个包含两个阵列的服务:

activeUsers: { name: string; id: number }[] = [
    { name: "Jimmy", id: 0 },
    { name: "Jaden", id: 1 },
  ];
inactiveUsers: { name: string; id: number }[] = [
    { name: "Heiji", id: 2 },
    { name: "Pheonix", id: 3 },
    { name: "Miles", id: 4 },
  ];
在不同的时间点,我将使用push方法更改这些数组

this.removeUser(data.id);
if (data.status === "active") {
  this.activeUsers.push({ name: data.name, id: data.id });
} else {
  this.inactiveUsers.push({ name: data.name, id: data.id });
}
然后,我在两个单独的组件中接收它们:

ngOnInit() {
    this.users = this.usersService.activeUsers;
  }
然后将数据呈现到屏幕上:

<li class="list-group-item" *ngFor="let user of users">
    {{ user.name }} |
    <a href="#" (click)="onSetToInactive(user.id)">Set to Inactive</a>
</li>
或者我可以删除removeUser()调用。将此代码块保留在服务中:

if (data.status === "active") {
      this.activeUsers.push({ name: data.name, id: data.id });
    } else {
      this.inactiveUsers.push({ name: data.name, id: data.id });
    }

现在,这似乎是一个时间问题。我可以在组件中设置数据之前等待,也可以更快地设置数据。removeUser()方法确实很慢——但我不明白,如果数据发生了变化,为什么它不简单地重新呈现组件?

解决了:原来我的方法是重新分配数组,所以我不得不改用一种新方法,只对其进行了变异。

这个问题在论坛上多次得到解决,用一个好的答案来检查这个问题:请不要这样回答。你可以在问题的评论部分这样做。
if (data.status === "active") {
      this.activeUsers.push({ name: data.name, id: data.id });
    } else {
      this.inactiveUsers.push({ name: data.name, id: data.id });
    }