Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/30.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angular 调用函数检查不同的数据类型时,角度指定ngIf类布尔属性_Angular_Typescript - Fatal编程技术网

Angular 调用函数检查不同的数据类型时,角度指定ngIf类布尔属性

Angular 调用函数检查不同的数据类型时,角度指定ngIf类布尔属性,angular,typescript,Angular,Typescript,我试图为ngIf分配不同的angular类布尔属性,但我检查了ngSwitch和ngIf else,并使用了模板,我认为这些模板不起作用 在我的示例数据集中,我有如下内容 dataSet: [ { total: '$382734.99', clauseName: 'showTotalDollars' }, { total: '3.22%', clauseName: 'showPercentageData' } ] if

我试图为ngIf分配不同的angular类布尔属性,但我检查了ngSwitch和ngIf else,并使用了模板,我认为这些模板不起作用

在我的示例数据集中,我有如下内容

   dataSet: [ { total: '$382734.99', clauseName: 'showTotalDollars' },
                    { total: '3.22%', clauseName: 'showPercentageData' }
              ]
if (clauseName == 'showTotalDollars') then
  *ngIf="showTotalDollars";
else if (clauseName == 'showPercentageData') then
  *ngIf="showPercentageData";
其中,我的类布尔属性定义为

 showTotalDollars: boolean = true;
  showPercentageData: boolean = false;
在我的angular代码中,我尝试了以下不起作用的方法

<div class="ng-container" *ngFor="let dataset of sales.dataset">
  <div class="ng-container" *ngIf="{{dataset.clauseName}}">
     <mat-list-item><span>{{total}}</span></mat-list-item>
  </div>
</div>

ngIf does not work with interpolation. 

I also tried 

*ngIf="getClauseName(item)"

In my ts code

 getClause(clickedItem: string) {

   if (clickedItem.clauseName == 'showTotalDollars') {
     return 'showTotalDollars;
   }
   else if (clickedItem.clauseName == 'showPercentageData') {
     return 'showPercentageData;
   }
   ... and so on
 }
当angular代码循环通过数据集中的每条记录并检查clauseName(有很多,而不仅仅是2个)并指定类布尔属性名时,我需要这样的东西。像这样工作的东西

   dataSet: [ { total: '$382734.99', clauseName: 'showTotalDollars' },
                    { total: '3.22%', clauseName: 'showPercentageData' }
              ]
if (clauseName == 'showTotalDollars') then
  *ngIf="showTotalDollars";
else if (clauseName == 'showPercentageData') then
  *ngIf="showPercentageData";
在讨论了插值和getClauseName函数之后,我不确定如何实现这一点

所需的行为将是ngFor循环通过数据集中的每个记录(有许多记录)并检查clauseName,它给出了数据类型的指示。找到一种从ts类中将ngIf动态设置为特定布尔属性名称的方法

感谢您的帮助。谢谢。

工作代码将是

<div class="ng-container" *ngFor="let dataset of sales.dataset">
  <div class="ng-container" *ngIf="this[dataset.clauseName]">
    <mat-list-item><span>{{total}}</span></mat-list-item>
  </div>
</div>

{{total}}

您能否创建此示例的stackblitz?您要检查的条件是什么