Прежде всего, у вас есть некоторые ошибки в вашем коде:
login(){
this.loginService.authentificate(this.credentials,()=>{
this.loginService
.getrole(this.credentials.username)
.subscribe(data => {
this.role = data // No need to stringify, your response (i am asuming) is a text
});
// This will allways return false as this.role is still undefined
if (this.role === "ROLE_ADMIN")
this.router.navigateByUrl('/home/(contentOutlet:produit)');
else
console.log(this.role);
})
}
Итак, для начала выдается Unexpected token R in JSON at position 0
, потому что вы используете JSON.stringfy()
, то есть fundtion, который принимает объект json и вернуть строку json. Ваш сервер повторно запускает строку, поэтому эта функция выдаст ошибку.
, тогда для части, где вы проверяете this.role
, this.role
не будет установлен до тех пор, пока не будет получен ответ REST API. поэтому вы должны написать свой код следующим образом.
.subscribe(data => {
this.role = data;
// here you are sure that the role is set to what you are expecting
// TODO: <-- HERE YOU PUT YOUR CODE THAT DEPENDS ON "ROLE"
});