如何解决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 举报,一经查实,本站将立刻删除。