2016-05-17 65 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

你[R偉大的人解決了我的沮喪issue.I有相同在使用sweetAlert2時發出問題。 –