首页 > 解决方案 > Angular 6 - 错误类型错误:“this.router 未定义”

问题描述

好吧,我又遇到了更多的 Angular 问题。对不起 (?)

问题是我试图在注册后重定向用户,但由于某种原因,我每次都会收到下一个错误:

ERROR TypeError: "this.router is undefined"

基本上,我正在处理表单提交(工作正常)输入并将它们发布到我的 Laravel API,它接受它,执行注册并返回成功消息。无论哪种方式,我都无法使用下一段代码重定向用户(使用 Angular 路由器):

onSubmit() {
    this.authService.registerUser(this.user).subscribe(
      response => {
        let data = Object.assign(response.alert, this.denyControllConfig);
        this.sweetAlert(data);
      },
      error => {
        let data = {};
        let errors = error.error.errors;
        for (let key in errors) data[key] = errors[key][0];
        // this.sweetAlert(data);
      }
    );
    setTimeout(function () {
      this.router.navigate(['login']);
    }, 2000);
  }

我在文件顶部这样导入了 Rourter:

import { Router } from "@angular/router";

这是我的类构造函数:

constructor(
    private router: Router,
    private authService: AuthService
  ) { }

有什么问题吗?

标签: angularangular6

解决方案


您需要在代码中使用箭头函数才能使用this

setTimeout(() => {
    this.router.navigate(['login']);
}, 2000);

推荐阅读