我试图向我的后端api发出get请求,返回一个对象数组。我使用以下代码:
small.component.ts (当调用openDepositModal()时,它从auth.service.ts调用函数 getUserInventory(),它向我的后端api发出get请求,然后返回一个带有对象的数组。)
[...]
export class Item{
id: String;
name: String;
img: String;
value: String;
}
const items: Item[] = [];
[...]
openDepositModal(){
if(!items){
this.authService.getUserInventory().subscribe(data => {
items = data; <-- ERROR HERE
});
}
}
auth.service.ts
[...]
getUserInventory(){
let headers = new Headers();
this.loadToken();
headers.append('Authorization', 'JWT ' + this.authToken);
headers.append('Content-Type', 'application/json');
return this.http.get('http://localhost:3000/api/user/inventory', { headers: headers })
.map(res => res.json());
}
[...]
在small.component.ts内部我试图将我从服务中获得的数据插入&#34; items&#34;阵列。但我收到错误&#34;无法分配给数组,因为它是一个常量或只读属性&#34;。有人可以修复我的代码吗?谢谢。 : - )
答案 0 :(得分:2)
使用let
代替const
e.g。 let items: Item[] = [];
const
声明与let
声明类似,但顾名思义,它们的值一旦绑定就无法更改。换句话说,它们具有与let相同的范围规则,但您无法重新分配给它们。
鉴于我们有两种具有类似范围的声明 语义学,发现自己要问哪一个使用它是很自然的。 像大多数广泛的问题一样,答案是:它取决于。
应用最小特权原则,除了以外的所有声明 你打算修改的那些应该使用const。理由是如果a 变量不需要写入,其他人也一样 codebase不应该自动能够写入对象,而且 将需要考虑他们是否真的需要重新分配到 变量。使用const还可以在推理时使代码更具可预测性 关于数据流。
另一方面,让我们不再写出比var更好的了 许多用户会更喜欢它的简洁性。本手册的大部分内容使用 让那些兴趣的声明。
答案 1 :(得分:0)
将错误替换为this.items = data;
答案 2 :(得分:0)
因为您已将其声明为常量。将它声明为类中的属性,然后可以为其赋值
const
如果它们不属于组件类,则将let
更改为DECLARE @total_Source AS INT;
DECLARE @total_Destination AS INT;
DECLARE @total_Blank AS INT;
SELECT @total_Source=Count(*) FROM [dbo].A;
SELECT @total_Destination=Count(*) FROM [dbo].B;
SELECT @total_Blank=Count(*) FROM [dbo].C WHERE ColumnA = ''";
SELECT @total_Source AS Total_Source, @total_Destination AS Total_Destination, @total_Blank AS Total_Blank