html 检查ngFor循环中是否存在空值

nr7wwzry  于 2022-11-20  发布在  其他
关注(0)|答案(3)|浏览(138)

我在网页的按钮中显示信息。这些按钮显示列表中的几个对象及其字段(例如object.name、object.age等)。在某些情况下,其中一个字段为空。我如何检查值是否为空?如果为空,我希望打印“未知”-到目前为止,它什么也不打印。
下面是我的ngFor循环(在我的例子中,environment有时为空):

<button *ngFor="let object of objects; let i = index" type="button" style="text-align:left; margin-right: 10px; margin-bottom: 10px" class="btn btn-primary"
        Name: {{object.name}} <br /> Locations: {{object.date}} <br /> Environments: {{object.environment}}
</button>

我知道我可以手动将环境设置为“未知”,因为它是一个字符串值,但我想知道是否有一种方法可以通过html做到这一点。

flvlnr44

flvlnr441#

以下是您的管道可能的外观:

import { Pipe, PipeTransform } from '@angular/core';

@Pipe({name: 'unknown'})
export class Unknown implements PipeTransform {
  transform(value: any): any {
    return value ? value : 'Unknown'
  }
}

在您的元件中,您需要包括管:

@Component({
...
pipes: [Unknown] // this is whatever you named your exported class

那么在你的html中你会有

...
<br /> Environments: {{object.environment | unknown}} //this is whatever name you put in the @Pipe decorator

就我个人而言,我更喜欢管道,因为它留给更清晰、更可读的html,并充分利用了你正在编码的框架

xghobddn

xghobddn2#

管道是一个很好的解决方案,但如果需要,可以直接在html中使用 *ngIf:

<button *ngFor="let object of objects; let i = index" type="button" style="text-align:left; margin-right: 10px; margin-bottom: 10px" class="btn btn-primary"
    Name: <span *ngIf="object.name">{{object.name}}</span> <span *ngIf="!object.name">Unknown</span>
euoag5mw

euoag5mw3#

const newData = this.someNestedArray.map((some:any)=>{
    return  {...some,
      changeRequests:some.changeRequests.map((request:any)=>{
            return {
              ...request,
              name:request.name === null ? "empty" : request.name,
              type:request.type === null ? "empty" : request.type,
              description:request.description === null ? "empty" : request.description
            }
      })
    }
 })

this.filteredArray = newData

在你的Angular 模板中

<div class="" *ngFor="let item of filteredArray">
      <div>{{item.name}}</div>
      <div>{{item.type}}</div> 
      <div *ngFor="let list of  item.changeRequests">
         <li  *ngIf="list.name !== 'empty' ">{{list.name}}</li>
         <li  *ngIf="list.type !== 'empty' ">{{list.type}}</li>
         <li *ngIf="list.description !== 'empty' ">{{list.description}}</li>
      </div>
    </div>

相关问题