角“包含”为空结果

时间:2019-09-10 07:55:18

标签: angular ngfor angular-ng-if

我只想在ngFor循环内显示

标记的HTML

标签仅1次,而ngIf条件为空结果。

<div *ngFor="let ndata of newsData; let i= index" (click)="redirect(ndata?.url)">
      <div class="news-cont" *ngIf="ndata.title.toLowerCase().includes(searchParam.toLowerCase())">
       <div class="row">
         <div class="col-md-2">
           <img class="m-img" src="{{ndata?.imageurl}}">
         </div>
         <div class="col-md-10">
           <h5> <img class="ic-img" src="{{ndata?.source_info?.img}}"> {{ndata?.source_info?.name}}</h5>
           <h4> {{ndata?.title}}</h4>
           <h6><i class="pe pe-7s-clock"></i> {{ndata?.published_on * 1000 | date:'HH:mm | yyyy-MMM-dd'}} </h6>
           <hr>
           <p [innerHTML]="ndata?.body">  </p>
           <p><i class="pe pe-7s-ribbon"></i>  <span class="categories-tag">Catergories <span>{{ndata?.categories}}</span></span> </p>
         </div>
       </div>
      </div>
        <p ANYCONDITION > No Results</p>
      </div>

我尝试了其他条件,但是for循环为每个条目迭代它。 期待对此有一个好的解决方案。

3 个答案:

答案 0 :(得分:1)

<ng-template>包装:

<ng-template [ngIf]="something.length > 0" [ngIfElse]="noDataTemplate">
  <div *ngFor="let ndata of newsData; let i= index" (click)="ndata && redirect(ndata.url)">
    <!-- your code here -->
  </div>
</ng-template>

<ng-template #noDataTemplate>
  <div>No data to display</div>
</ng-template>

这种方法将清楚地确定在数据为空和非空的情况下应该采取的措施。

答案 1 :(得分:0)

您不能破坏* ngFor。

您必须选择:

  • 在代码隐藏中过滤newData
  • 使用管道

答案 2 :(得分:0)

请尝试move

所以您的html应该是这样的

newsData.filter(a=>a.title.toLowerCase().includes(searchParam.toLowerCase()) > -1)