我的问题是,当我使用http.post方法时,它给我一个错误“ TypeError:无法读取未定义的属性'toLowerCase'”。问题是什么?我尝试将Angular降级为8.0.0版,但是它不起作用。
我的登录服务:
login(model: any)
{
return this.http.post(this.baseUrl, model)
.pipe(map((response: any) => {
const user = response;
if(user){
localStorage.setItem('token', user);
}
}));
}
我在组件中的登录方法:
login(){
this.authService.login(this.model)
.subscribe(next =>{
console.log('You have been logged in');
},err => {
console.log(err);
});
}
答案 0 :(得分:1)
我认为您的问题与baseUrl
声明有关。您可能正在定义它,而不是设置值,而是设置类型。请记住,:
设置了一个类型,=
设置了一个值,您可能知道这一点,但我将其保留以备将来参考。因此,您的代码中可能包含以下内容:
private baseUrl: 'http://localhost:3000/';
如果我使用console.log baseUrl's
类型,那么我当然是不确定的:
console.log(typeof this.usersUrl);
// returns undefined
如果我用console.log baseUrl
来获取它的值,我们将再次无法定义:
console.log(this.usersUrl);
// returns undefined
检查this示例。
在这种情况下,只需修正baseUrl
的声明并将字符串设置为值:
private baseUrl: string = 'http://localhost:3000/';
关于错误为何指向小写方法的一些见解
您收到TypeError: Cannot read property 'toLowerCase' of undefined"
错误,因为angular尝试使用本机方法toLowercase将字符串baseUrl
转换为所有小写字母(以防万一),并且实际上未在您的代码正确,未定义baseUrl或字符串,因此引发了错误。