如何使用ngIf

时间:2018-08-21 11:09:38

标签: angular typescript angular5 angular-ng-if

代码:

 <app-part [search]='search' *ngIf="isPart"></app-part>  
    <app-partlist [search]='search' *ngIf="isPartList"></app-partlist>

Todo:

  • 仅使两个组件之一可见。


在下面的代码中,两个选项卡一次都正确,...我试图一次打开一个选项卡

    getItem(search: Search) {
    if (search.item.startsWith("A") || search.item.startsWith("H") || search.item.startsWith("N") || search.item.startsWith("Q") || search.item.startsWith("R") && search.item.length == 11) {
      this.isPart = true
    }
    else if (search.item.startsWith("Z") || search.item.startsWith("V") || search.item.startsWith("X") || search.item.startsWith("G") && search.item.length == 9) {
      this.isPartList = true
    }
  }

3 个答案:

答案 0 :(得分:0)

在将其他变量设置为true时,只需分配false即可。

   getItem(search: Search) {
        if (search.item.startsWith("A") || search.item.startsWith("H") || search.item.startsWith("N") || search.item.startsWith("Q") || search.item.startsWith("R") && search.item.length == 11) {
          this.isPart = true;
          this.isPartList = false;
        }
        else if (search.item.startsWith("Z") || search.item.startsWith("V") || search.item.startsWith("X") || search.item.startsWith("G") && search.item.length == 9) {
          this.isPartList = true
          this.isPart = false;
        }
      }

答案 1 :(得分:0)

这一次只会打开一个标签页(使用单个变量),在这种情况下:

  • 两个组件的dom渲染都取决于isPart变量。一次,只有一个是真的。

  • 如果您想要两个不同的变量,则其他答案就是您所需要的情况。


<app-part [search]='search' *ngIf="isPart"></app-part>  
        <app-partlist [search]='search' *ngIf="!isPart"></app-partlist>

答案 2 :(得分:0)

仅使用一个道具和ngIfElse

<app-part [search]='search' *ngIf="isPart; else partList"></app-part>
<ng-template #partList>
    <app-partlist [search]='search'></app-partlist>
</ng-template>

和getItem:

getItem(search: Search) {
    if (search.item.startsWith("A") || search.item.startsWith("H") || search.item.startsWith("N") || search.item.startsWith("Q") || search.item.startsWith("R") && search.item.length == 11) {
      this.isPart = true
    } else if (search.item.startsWith("Z") || search.item.startsWith("V") || search.item.startsWith("X") || search.item.startsWith("G") && search.item.length == 9) {
      this.isPart = false
    }
}

如果仍然需要解析多种类型,则可以使用字符串标识符:

<app-part [search]='search' *ngIf="contnetType === 'part'"></app-part>
<app-partlist [search]='search' *ngIf="contnetType === 'list'"></app-partlist>

getItem(search: Search) {
    if (search.item.startsWith("A") || search.item.startsWith("H") || search.item.startsWith("N") || search.item.startsWith("Q") || search.item.startsWith("R") && search.item.length == 11) {
      this.contentType = "part";
    } else if (search.item.startsWith("Z") || search.item.startsWith("V") || search.item.startsWith("X") || search.item.startsWith("G") && search.item.length == 9) {
      this.contentType = "list";
    }
}