Arrays *ngFor取决于2个匹配值的数组

Arrays *ngFor取决于2个匹配值的数组,arrays,angular,typescript,Arrays,Angular,Typescript,我在理解如何执行*ngFor循环时遇到一些问题,这取决于我在两个不同数组中的值,例如: 数组:标签\u名称 数组:按级别划分的总数 我正在做一个ngFor,我希望ngFor渲染在这两个数组中有值的线,在这里,我的ngFor应该渲染:网络主:1537.82,拖放铝:21752.15和Misc VANNE:19541 我尝试过foreach和filter,但在网上找到的解决方案都不适合我的问题 如果有人知道我需要去哪里/我需要做什么,我将不胜感激 谢谢,这是事先准备好的 代码示例: HTML:

我在理解如何执行*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(
      {

      }
    )
  }