这是有效的,现在由于某种未知的原因它给出了这个错误:
错误TS2345:类型'{方法:字符串; body:string; headers:{“Content-Type”:string; }; }'不能赋值给'RequestInit |类型的参数未定义”。 输入'{method:string; body:string; headers:{“Content-Type”:string; }; }'不能赋值为'RequestInit'。 属性“标题”的类型不兼容。 输入'{“Content-Type”:string; }'不能赋值为'Headers | string [] [] |未定义”。 对象文字只能指定已知属性,而“内容类型”'在类型'标题|中不存在string [] [] |未定义”。
它在FETCH上,如果我注释掉..
headers: {
"Content-Type": "application/json;charset=UTF-8"
}
再次输入应用程序显示,但当然它无法使用正确的内容类型到达服务器。
我不知道为什么现在这个错误,我已经看了类似的东西,但找不到东西。
以下是方法:
submitLogin() {
if (this.controller.validate()) {
// Lets do a fetch!
this.login.Username = this.username;
this.login.Password = this.password;
const task = fetch("/api/jwt", {
method: "POST",
body: JSON.stringify(this.login),
headers: {
"Content-Type": "application/json;charset=UTF-8" // HERE!
}
})
.then(response => response.json())
.then(data => {
this.tokenService.saveJWT(data);
this.userService.saveUserName();
this.router.navigate("home");
})
.catch(error => {
this.tokenService.clearJWT();
});
}
}
有谁知道为什么会这样,更重要的是如何解决它。
答案 0 :(得分:0)
好的,出于某种原因,这只是停止了工作。有效地显示塞子。我找到了this question并改变了我对以下内容实现标头的方式,现在可以正常使用了。
const task = fetch("/api/jwt", {
method: "POST",
body: JSON.stringify(this.login),
headers: new Headers({ 'content-type': 'application/json' })
})
.then(response => response.json())
.then(data => {
// First save the JWT.
this.tokenService.saveJWT(data);
// Next go back to the api and get the username and save that.
this.userService.saveUserName();
// Finally redirect to home page.
this.router.navigate("home");
})
.catch(error => {
this.tokenService.clearJWT();
});
您会注意到我现在使用“new”添加标题:
headers: new Headers({ 'content-type': 'application/json' })