angular - 您可以将 GET 方法中的数据分配给 Angular 8 中的外部变量吗?
问题描述
在下面的代码中,我试图将 testdata 的内容分配给 checkList 中的值。我遇到的问题是循环开始时 checkList 未定义。我似乎无法弄清楚如何解决这个问题,似乎无论我做什么 checkList 或 testdata 都是未定义的。
我是 Angular 的新手,我想知道这是否与 get 方法的异步属性有关?
masterSelect: Boolean;
checkList: any;
fileNames$: any;
testdata: string[];
constructor(private http: HttpClient) {
this.checkList = [
{id:1,value:'Section1',isSelected:false},
{id:2,value:'Section2',isSelected:false},
{id:3,value:'Section3',isSelected:false},
{id:4,value:'Section4',isSelected:false},
{id:5,value:'Section5',isSelected:false},
{id:6,value:'Section6',isSelected:false},
{id:7,value:'Section7',isSelected:false},
]
this.fileNames$ = this.http.get<any>(this.baseUrl + "Invoice/GetFileNames").subscribe(function (data) {
this.testdata = data;
for (let i = 0; i < this.testdata.length; i++) {
//console.log(this.testdata[i])
this.checkList[i].value = this.testdata[i];
}
}, function (error) {
this.testdata = error;
});
this.masterSelect = false;
}
解决方案
我认为,您可以将清单移动到订阅中。我的解决方案是:
constructor(private http: HttpClient) {
this.fileNames$ = this.http.get<any>(this.baseUrl + "Invoice/GetFileNames").subscribe(function (data) {
this.checkList = [
{id:1,value:'Section1',isSelected:false},
{id:2,value:'Section2',isSelected:false},
{id:3,value:'Section3',isSelected:false},
{id:4,value:'Section4',isSelected:false},
{id:5,value:'Section5',isSelected:false},
{id:6,value:'Section6',isSelected:false},
{id:7,value:'Section7',isSelected:false},
]
this.testdata = data;
for (let i = 0; i < this.testdata.length; i++) {
//console.log(this.testdata[i])
this.checkList[i].value = this.testdata[i];
}
}, function (error) {
this.testdata = error;
});
this.masterSelect = false;
}
推荐阅读
- python - python中的这个错误是什么意思?
- netsuite - 项目履行到发票
- java - Java中的多态性如何工作(将调用哪个方法??)
- ajax - 如果我在我的 Web 应用程序中使用 ajax 发出所有请求,会有什么不利行为
- java - 当子类对象具有父类型的引用时,无法访问子类方法
- python - 如何用鼻子测试python的“__main__”代码
- java - HashSet clone() 方法
- android - android上多行标题的偏好
- postgresql - 如何在sql中加入同一张表?
- sms - Clickatell 是否在其 SMS API 中支持个性化 SMS?