微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

setInterval() 不会在不刷新角度组件中的页面的情况下设置数据

如何解决setInterval() 不会在不刷新角度组件中的页面的情况下设置数据

这是我的角度分量 -

export class UserListComponent implements OnInit,OnDestroy {
  private _subscriptions: Subscription;
  private _users: User[] = [];
  private _clickableuser: boolean = true;

  constructor(
    private route: ActivatedRoute,) { }

  ngOnInit() {
    const source = interval(1000);
    const users = this.route.snapshot.data['users'] as IUserInterface[];

    this._subscriptions = source.subscribe(() => this._users = users.map(user => new User(user)))

  }

  ngOnDestroy() {
    this._subscriptions.unsubscribe();
  }

我得到了数据,但是间隔没有刷新就没有设置它。

解决方法

ngOnInit() 仅在首次创建组件时被调用一次。这意味着您的活动路线只会被读取一次,这也意味着您的 users 数组始终是相同的。

我猜您每次更新路线数据时都在尝试更新您的组件。为此,您需要订阅 this.route.data(注意我没有包括 snapshot)。它看起来像这样:

this._subscriptions = this.route.data.subscribe(data => this._users = data['users'].map(user => new User(user));

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。