【问题标题】:this.router is undefined in AngularJS 2this.router 在 AngularJS 2 中未定义
【发布时间】:2016-05-17 14:33:23
【问题描述】:

这是我注册用户并重定向到主页的方法:

onSubmit(){
    this.userService.createUser(this.user).subscribe(function (response) {
            alert('Successfully registered');
            localStorage.setItem('token', response['token']);
            this.router.navigate(['Home']);
        }, function (err) {
            console.log(err);
        }
    );
}

上面,我有这个构造函数:

constructor(private router: Router, private userService: UserService){}

我在主组件中添加了ROUTER_PROVIDERS

providers: [
    ROUTER_PROVIDERS,
    HTTP_PROVIDERS
]

当我尝试注册用户时,我收到此错误:

TypeError: Cannot read property 'navigate' of undefined

我做错了什么?

【问题讨论】:

    标签: javascript angularjs angular angular2-routing


    【解决方案1】:

    您需要在代码中使用箭头函数才能使用“上下文 this”(对应于您的组件实例):

    onSubmit(){
      this.userService.createUser(this.user).subscribe((response) => { // <---
            alert('Successfully registered');
            localStorage.setItem('token', response['token']);
            this.router.navigate(['Home']);
        }, (err) => { // <---
            console.log(err);
        }
      );
    }
    

    【讨论】:

    • 你伟大的人解决了我令人沮丧的问题。我在使用 sweetAlert2 时遇到了同样的问题。
    猜你喜欢
    • 2017-09-09
    • 2014-04-08
    • 2015-10-10
    • 2015-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-28
    相关资源
    最近更新 更多