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']); 
  })