2016-05-17 3 views
1

Вот мой метод, который регистрирует пользователя и перенаправляет на главную страницу:this.router не определено в AngularJS 2

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 

Что я делаю неправильно?

ответ

5

Вы должны использовать функции курсора в коде, чтобы иметь возможность использовать «контекстуальный это» (который соответствует вашему экземпляру компонента):

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

р о великий человек решил мой расстраивает issue.I было то же самое при использовании sweetAlert2. –

Смежные вопросы