Javascript 如何在ngFor中仅显示单个值或单个可选值?

Javascript 如何在ngFor中仅显示单个值或单个可选值?,javascript,angular,Javascript,Angular,我希望在ngFor中循环整个数组,并最终显示单个值(如果满足条件)或单个可选值(如果不满足条件),排除所有其他循环值。我的意思是我不想显示循环中的任何其他值,除了一个 <div *ngFor="let arr1 of array1"> <div *ngFor="let arr2 of array2>

我希望在ngFor中循环整个数组,并最终显示单个值(如果满足条件)或单个可选值(如果不满足条件),排除所有其他循环值。我的意思是我不想显示循环中的任何其他值,除了一个

 <div *ngFor="let arr1 of array1">                                                
    <div *ngFor="let arr2 of array2>                                                                                                              
       <input [value]="arr1.id==arr2.id?arr2.quantity:'0'>
     </div>   
  </div> 

使用
*ngIf
解决此问题:

<div *ngFor="let arr1 of array1">                                                
   <div *ngFor="let arr2 of array2>                                                                                                              
      <input *ngIf="arr1.id==arr2.id" [value]="arr2.quantity">
   </div>   
</div> 


使用
*ngIf
解决此问题:

<div *ngFor="let arr1 of array1">                                                
   <div *ngFor="let arr2 of array2>                                                                                                              
      <input *ngIf="arr1.id==arr2.id" [value]="arr2.quantity">
   </div>   
</div> 


一种解决方案是变换数组1,并使用map添加新属性“quantity2”

this.array1=this.array1.map(x=>{
       let unique=this.array2.find(a=>a.id==x.id);
       return
       {
          ...x,
          quantity2:unique? unique.quantity:0
       }
});

一种解决方案是变换数组1,并使用map添加新属性“quantity2”

this.array1=this.array1.map(x=>{
       let unique=this.array2.find(a=>a.id==x.id);
       return
       {
          ...x,
          quantity2:unique? unique.quantity:0
       }
});

相反,我建议您在组件文件中执行此操作:

公共数量:编号=0;//使用默认值初始化
Public getQty():编号{
this.qty=array1.filter((项,键)=>{//过滤数组1
如果(item.id==array2[key].id){//检查是否在array2中找到item.id
return item;//然后从array1返回该项。
}
})[0]。数量;
}
恩戈尼尼特(){
this.getQty();//在此处或需要的任何位置调用它。
}
在模板中,您可以使用以下属性:

<input [value]="qty">

相反,我建议您在组件文件中执行此操作:

公共数量:编号=0;//使用默认值初始化
Public getQty():编号{
this.qty=array1.filter((项,键)=>{//过滤数组1
如果(item.id==array2[key].id){//检查是否在array2中找到item.id
return item;//然后从array1返回该项。
}
})[0]。数量;
}
恩戈尼尼特(){
this.getQty();//在此处或需要的任何位置调用它。
}
在模板中,您可以使用以下属性:

<input [value]="qty">

.ts
public值='0';
对于(设i=0;i.ts
public值='0';

对于(设i=0;我可以请您显示阵列1和阵列2吗?我建议您在组件文件中而不是在模板中执行此操作。如果条件未满足,则要求是什么。您已写入以显示单个值(如果条件满足)或显示单个备选值(如果条件未满足)?请澄清。您能显示array1和array2吗?我建议您在组件文件中而不是在模板中执行此操作。如果条件未满足,则要求是什么。您已编写以显示单个值(满足条件的情况下)或显示单个备选值(不满足条件的情况下)?请澄清。我只想显示单个值(如果条件满足-arr2.数量,如果不满足-0)并忽略所有其他循环值。例如,如果数组包含10个值,我希望显示一个满足值或一个替代值,并忽略所有其他9个值。问题是,如果条件不满足,则显示替代9次,我只希望显示单个值(如果条件满足-arr2。数量,如果不满足-0)并忽略所有其他循环值。例如,如果数组包含10个值,我希望显示一个满足值或一个替代值,并忽略所有其他9个值。问题是,如果条件不满足,则显示替代9次,似乎不会忽略其他ngFor值。如果数组的长度为10,则显示arr2.quantity一次,并输入“0”如果条件未满足,则9次显示要求。您已写入以显示单个值(条件满足时)或显示单个可选值(条件不满足时)我只想显示10个循环中的单个值或单个可选值,比如说。它似乎不会忽略其他ngFor值。如果数组的长度为10,它将显示arr2.quantity一次,并输入“0”9次。如果条件未满足,则输入“0”。您已写入以显示单个值(在满足条件的情况下)或者显示单个可选值(如果不满足条件),我只想显示单个值或10个循环中的单个可选值。