#angular #typescript
#angular #typescript
Вопрос:
У меня есть служба для аутентификации моего пользователя, но я не знаю, что делать с полученными данными. Я не хочу перенаправлять пользователя на правильную страницу в зависимости от его роли и отображать его имя на странице. Я пробовал разные вещи, но когда я вызывал маршрутизатор или функцию, он никогда не находил. Похоже, что это не в том же контексте. Как я могу это сделать?
Вот мой компонент входа в систему :
import { Component, OnInit } from '@angular/core';
import {User} from "../models/user";
import {AuthenticationService} from "../services/authentication.service";
import {Router} from "@angular/router";
@Component({
selector: 'app-login',
templateUrl: './login.component.html',
styleUrls: ['./login.component.css'],
providers: [AuthenticationService]
})
export class LoginComponent implements OnInit {
user:User = new User();
result: any;
constructor(private authenticationService:AuthenticationService,
private router:Router) {
}
loginAction(){
this.authenticationService.login(this.user)
.subscribe(function(result){
this.result = resu<
console.log(this.result); // result : {token: "ABCDE....", "email":"test@test.com", "username": "Jack James", role:"ADMIN"}
this.doSth(); //Never called I supposed it's not the same context
this.router.navigate(['home']); // router is not find
// I wan't to do actions to redirect to another page and display the user currently logged in
},
err => {
// Log errors if any
console.log(err);
});
}
doSth(){
console.log("Do something");
}
ngOnInit() {
}
}
Комментарии:
1. Что означает «маршрутизатор не найден»? маршрутизатор не определен? маршрутизатор не может найти маршрут?
2. Все в порядке, вы можете увидеть ответ
Ответ №1:
Ваша проблема заключается в следующей строке : .subscribe(function(result){
!!
При таком function()
синтаксисе область this
видимости теряется!
Вы должны использовать синтаксис со стрелкой () =>
..
Вот так: .subscribe((result) => {
.
Вот и все, теперь вы можете использовать this.router....
🙂