Arrays *ngFor取决于2个匹配值的数组
我在理解如何执行*ngFor循环时遇到一些问题,这取决于我在两个不同数组中的值,例如: 数组:标签\u名称 数组:按级别划分的总数 我正在做一个ngFor,我希望ngFor渲染在这两个数组中有值的线,在这里,我的ngFor应该渲染:网络主:1537.82,拖放铝:21752.15和Misc VANNE:19541 我尝试过foreach和filter,但在网上找到的解决方案都不适合我的问题 如果有人知道我需要去哪里/我需要做什么,我将不胜感激 谢谢,这是事先准备好的 代码示例: HTML:Arrays *ngFor取决于2个匹配值的数组,arrays,angular,typescript,Arrays,Angular,Typescript,我在理解如何执行*ngFor循环时遇到一些问题,这取决于我在两个不同数组中的值,例如: 数组:标签\u名称 数组:按级别划分的总数 我正在做一个ngFor,我希望ngFor渲染在这两个数组中有值的线,在这里,我的ngFor应该渲染:网络主:1537.82,拖放铝:21752.15和Misc VANNE:19541 我尝试过foreach和filter,但在网上找到的解决方案都不适合我的问题 如果有人知道我需要去哪里/我需要做什么,我将不胜感激 谢谢,这是事先准备好的 代码示例: HTML:
<div class="container dpf wid">
<form [formGroup]="cartForm">
<div *ngFor="let levels of total_by_level"
style="display: contents">
<div *ngFor="let level_names of label_name">
<a class="flex1 bold pointer" >TOTAL {{level_names}} {{levels[2][3]}}</a>
</div>
</form>
</div>
在我的页面上,这是目前的实际情况:
我认为输入数组需要重新格式化。这当然是解决一个首先可以避免的问题的办法 也就是说,您可以尝试以下循环 控制器
for(此中的const levelKey.total按级别[0]计算){
如果(this.total_by_level[0].hasOwnProperty(levelKey)){//Hello!首先,感谢您的回答,我得到了“可能对意外(自定义/继承)成员进行迭代,可能缺少hasOwnProperty检查”,这是“this.total_by_level[0]”的原因。您知道我是否应该编辑数组,使其在[0]内的值上循环?如果我没有记错,它应该只是一个警告,代码应该运行。不过,您也可以在循环中包含它所需的检查。我已更新了答案和Stackblitz。请检查我的代码。谢谢,数组不能在此[0]部分循环。按级别[0]合计,我得到:错误类型错误:无法读取未定义的属性“0”,我不能只循环到数据中,而不是创建[0]级别的数组吗?我使用了您在屏幕截图中发布的对象数组。可能是实际对象不同。应该是一个简单的修复。控制台记录对象,检查结构并删除[0]
如果不是数组,则从上面的代码中提取一部分。基本实现保持不变。好的!感谢您的帮助!我将把它标记为答案,因为问题现在来自我的数据
constructor(private formBuilder: FormBuilder,
private service: QuotationMenuService) { }
cartForm: FormGroup;
quotArray: any;
quotDetails: any;
cartDetails: any;
labels: any;
label_name: any;
total_by_level: any;
array: any;
ngOnInit(){
this.requiredFields();
this.service.getStructure().subscribe(res => {
this.labels = res.parts;
this.label_name = Array(res.labels_levels);
console.log(this.label_name);
});
this.initQuot();
}
ngOnChanges() {
this.initQuot();
}
initQuot(){
this.service.checkExistQuot().subscribe(res => {
this.quotArray = res;
this.quotDetails = res.quotation.quotationdetail;
this.cartDetails = Array(res.cart);
console.log(this.quotDetails);
console.log(this.cartDetails);
this.total_by_level = Array(res.cart.total_by_level);
console.log(this.total_by_level);
console.log(res);
});
}
get f() {
return this.cartForm.controls;
}
requiredFields(){
this.cartForm = this.formBuilder.group(
{
}
)
}