【问题标题】:setInterval() does not set data without refreshing the page in angular componentsetInterval() 不设置数据而不刷新角度组件中的页面
【发布时间】:2021-09-10 06:38:02
【问题描述】:

这是我的角度分量 -

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();
  }

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

【问题讨论】:

  • 你的意思是使用 setInterval() 吗?
  • @BrianSmith 是的,已编辑。
  • ngOnInit 的间隔(1000)就是我的意思。
  • 你能解释一下你想做什么吗?
  • @BrianSmith 间隔(1000)来自 rxjs,所以它的 setInterval()

标签: javascript angular typescript rxjs setinterval


【解决方案1】:

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

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

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

【讨论】:

猜你喜欢
  • 2016-10-23
  • 1970-01-01
  • 2014-04-11
  • 1970-01-01
  • 2021-04-26
  • 2014-04-29
  • 2016-03-03
相关资源
最近更新 更多