Angular 路由前超时
Angular timeout before routing
更新联系人后我会显示一条消息,1500 毫秒后我会转到另一个页面。我是这样做的:
onSubmit() {
if (this.form.valid) {
this.contactService.updateContact(this.contact).subscribe(response => {
this.contactUpdated = true;
Observable.interval(1500)
.subscribe(i => {
this.router.navigate(['/commit']);
})
});
}
}
这只有效一次,在我用鼠标导航到另一个菜单后,我将自动返回到提交路径。
有谁知道我做错了什么?
所以问题是你想在 1500 毫秒后重定向用户一次,而不是每 1500 毫秒,即使用户已经在不同的页面上也是如此。
Observable.interval
在每个间隔后发出一个值,因此您可以使用 take(1)
在单次发射后完成链:
Observable.interval(1500)
.take(1)
.subscribe(i => {
this.router.navigate(['/commit']);
})
或者你可以使用只发出一次的 Observable.timer(1500)
更简单(如果你只使用第一个参数):
Observable.timer(1500)
.subscribe(i => {
this.router.navigate(['/commit']);
})
更新联系人后我会显示一条消息,1500 毫秒后我会转到另一个页面。我是这样做的:
onSubmit() {
if (this.form.valid) {
this.contactService.updateContact(this.contact).subscribe(response => {
this.contactUpdated = true;
Observable.interval(1500)
.subscribe(i => {
this.router.navigate(['/commit']);
})
});
}
}
这只有效一次,在我用鼠标导航到另一个菜单后,我将自动返回到提交路径。 有谁知道我做错了什么?
所以问题是你想在 1500 毫秒后重定向用户一次,而不是每 1500 毫秒,即使用户已经在不同的页面上也是如此。
Observable.interval
在每个间隔后发出一个值,因此您可以使用 take(1)
在单次发射后完成链:
Observable.interval(1500)
.take(1)
.subscribe(i => {
this.router.navigate(['/commit']);
})
或者你可以使用只发出一次的 Observable.timer(1500)
更简单(如果你只使用第一个参数):
Observable.timer(1500)
.subscribe(i => {
this.router.navigate(['/commit']);
})