Javascript AngularJS 2中未定义this.router

Javascript AngularJS 2中未定义this.router,javascript,angularjs,angular,angular2-routing,Javascript,Angularjs,Angular,Angular2 Routing,下面是我注册用户并重定向到主页的方法: onSubmit(){ this.userService.createUser(this.user).subscribe(function (response) { alert('Successfully registered'); localStorage.setItem('token', response['token']); this.router.navigate(['

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

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\u PROVIDERS

providers: [
    ROUTER_PROVIDERS,
    HTTP_PROVIDERS
]
当我尝试注册用户时,出现以下错误:

TypeError: Cannot read property 'navigate' of undefined

我做错了什么?

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

onSubmit(){

this.userService.createUser(this.user).subscribe((response)=>{/{/{/您需要在代码中使用箭头函数才能使用“上下文this”(对应于您的组件实例):

onSubmit(){

this.userService.createUser(this.user).subscribe((response)=>{//{//您是伟人解决了我令人沮丧的问题。我在使用sweetAlert2时遇到了相同的问题。您是伟人解决了我令人沮丧的问题。我在使用sweetAlert2时遇到了相同的问题。
onSubmit(){
  this.userService.createUser(this.user).subscribe((response) => { // <---
        alert('Successfully registered');
        localStorage.setItem('token', response['token']);
        this.router.navigate(['Home']);
    }, (err) => { // <---
        console.log(err);
    }
  );
}