我需要将确切的数据传递给webAPI:
{
email: "useremail",
password: "userpassword",
grant_type: "password"
}
从登录表单中,我收到以下数据:
{
email: "useremail",
password: "userpassword"
}
我需要将 grant_type:"密码" 添加到对象中。
这是我的方法
signIn(credentials) {
console.log(credentials);
this.authService.login(credentials)
.subscribe(result => {
if (result)
this.router.navigate(['/']);
else
this.invalidLogin = true;
});
}
凭据是来自登录表单的数据。
答案 0 :(得分:2)
如果你有这个:
let jsonObject = {
email: "useremail",
password: "userpassword",
}
我认为你可以这样做
jsonObject['grant_type'] = password;
否则,简单有效:
let extendedJsonObject = {
email: jsonObject.email,
password: jsonObject.password,
grant_type: 'password'
};
正如 @jonrsharpe 在评论中所说,您也可以这样做:
let extendedJsonObject = { grant_type: 'password', ...jsonObject }
根据 @Kyrsberg ,您也可以
let extendedJsonObject = Object.assign({grant_type: 'password'}, jsonObject);
答案 1 :(得分:0)
您似乎想要做的是向对象添加属性。 这是所有JavaScript中最基本的操作之一。您可以在数百或数千种教程,介绍,初学者书籍,博客文章以及涵盖JavaScript的文档页面中学到很多东西。
我强烈建议您返回并查看您用于学习JavaScript的任何材料。例如,您可以从this friendly intro to property accessors开始。
这与TypeScript或Angular无关。 TypeScript是JS之上的一个类型层。 Angular是一个应用程序框架。你的问题纯粹是关于JavaScript。你有点担心这个问题可能与TypeScript或Angular有关。它表示您实际上并不了解您正在使用的工具之间的关系,即JavaScript和TypeScript以及Angular。清楚地了解您使用的是JavaScript语言。在开始使用TypeScript或Angular之前,您必须仔细研究并熟悉它。
你似乎也对“JSON”一词的含义感到非常困惑。 JSON正是一回事:用于交换信息的基于文本的格式。 JavaScript对象不是 JSON,虽然它们彼此相似(因此是“JSON”的“J”),并且可以来回转换(“解析”和“字符串化”)。你的问题与JSON完全无关。您正在使用的对象(包括email
等属性)不是 JSON。如果你坚持称他们为JSON - 并且不缺少同样被误导的人试图使用JavaScript - 你只会让自己和周围的人感到困惑。这些对象是普通的,旧的,普通的JavaScript对象,这就是你应该称之为的对象。