当前位置: 首页 > 知识库问答 >
问题:

如果在模板中

乜璞瑜
2023-03-14

如何在一个*ngIf语句中包含多个案例?我习惯于Vue或Angular 1带有ifelse ifelse,但Angular 4似乎只有trueif)和falseelse)条件。

根据文件,我只能做:

<ng-container *ngIf="foo === 1; then first else second"></ng-container>
<ng-template #first>First</ng-template>
<ng-template #second>Second</ng-template>
<ng-template #third>Third</ng-template>

但我想有多种条件(比如):

<ng-container *ngIf="foo === 1; then first; foo === 2; then second else third"></ng-container>
<ng-template #first>First</ng-template>
<ng-template #second>Second</ng-template>
<ng-template #third>Third</ng-template>

但我最终不得不使用ngSwitch,这感觉像是黑客攻击:

<ng-container [ngSwitch]="true">
  <div *ngSwitchCase="foo === 1">First</div>
  <div *ngSwitchCase="bar === 2">Second</div>
  <div *ngSwitchDefault>Third</div>
</ng-container>

或者,我在Angular 1和Vue中使用的很多语法在Angular 4中似乎都不受支持,那么,用这样的条件构造代码的推荐方法是什么呢?

共有3个答案

任元青
2023-03-14

这似乎是最干净的方式

if (foo === 1) {

} else if (bar === 99) {

} else if (foo === 2) {

} else {

}

在模板中:

<ng-container *ngIf="foo === 1; else elseif1">foo === 1</ng-container>
<ng-template #elseif1>
    <ng-container *ngIf="bar === 99; else elseif2">bar === 99</ng-container>
</ng-template>
<ng-template #elseif2>
    <ng-container *ngIf="foo === 2; else else1">foo === 2</ng-container>
</ng-template>
<ng-template #else1>else</ng-template>

请注意,当条件涉及不同的变量时(一次只有一个情况是正确的),它的工作方式就像一个正确的。在这种情况下,其他一些答案不正确。

旁白:天哪,棱角分明,这是一些非常丑陋的,否则如果模板代码...

陈浩
2023-03-14

你可以使用:

<ng-template [ngIf]="index == 1">First</ng-template>
<ng-template [ngIf]="index == 2">Second</ng-template>
<ng-template [ngIf]="index == 3">Third</ng-template>

除非ng容器部分对你的设计很重要。

这是一个Plunker

茹正初
2023-03-14

另一种选择是嵌套条件

<ng-container *ngIf="foo === 1;else second"></ng-container>
<ng-template #second>
    <ng-container *ngIf="foo === 2;else third"></ng-container>
</ng-template>
<ng-template #third></ng-template>
 类似资料:
  • 我需要在angularjs模板中使用else if。语法是什么?例如,在c语言中,我将编写如下代码: 我的代码:

  • 这有点像这个问题https://issues.jboss.org/browse/RF-11469我有一个包含组合的模板,定义如下: 控制器是通过模板子级中的定义的。 以下是复合impl(标准面板): 点击按钮“filterAction”结果如下: javax.faces.FacesException:#{cc.attrs.filterAction}:javax.el.属性NotFoundExcep

  • 我有一个非常特殊的例子,我需要在一个模板文本中使用一个模板文本,但是我做不到。 代码如下所示: 然而,我必须将其包装在函数中,同时保持变量的值,这会导致错误发生。无论我是否逃脱了滴答声。 使用转义滴答,我收到以下错误消息: 错误:预期的某个链接但未提供 没有,我得到: 意外标记,预期“”,” 我该怎么处理这件事? 编辑:可能应该注意的是,中传递的代码将被渲染并且需要使用它。它最终将通过传递给另一个

  • 问题内容: 因此,我正在做一个简单的if检查结构中的布尔变量,但似乎不起作用,只是停止呈现HTML。 所以下面的结构是这样的: 现在,我可以显示一个带有类别的Category结构。 贝娄是一个结构的例子: 我已经尝试了多种方法,如下所示,但是它们都不起作用: 问题答案: 您必须从模板导出要访问的所有字段:将其首字母更改为大写: 以及每个引用: 每个未导出的字段只能从声明包中访问。您的软件包声明类型

  • 我试图声明,如果变量为 true 或不存在(即,var 的默认值为 true),则 helm 模板中的代码块应该存在。以下作品: 这看起来相当复杂,有什么更简单的吗?我尝试了几种方法使用函数,但它们都导致忽略该值(无论是否存在,true或false,块总是被渲染):

  • 我创建了新项目,但找不到出错的地方。 Django versiob - 3.1.5 蟒蛇 3.7.4 模板DoesNotExist位于/index。html请求方法:GET请求URL:http://127.0.0.1:8000/Django版本:3.1.5异常类型:TemplateDoesNotExist异常值: 索引。html异常位置:C:\Users\user\PycharmProjects\