如果ngFor循环使用带有then/else语法的模板,如何将ngFor循环中的当前变量传递给ngIf?
当内联使用时,它们似乎通过罚款,但不能从模板访问,例如:
<ul *ngFor="let number of numbers">
<ng-container *ngIf="number % 2 == 0; then even_tpl; else odd_tpl"><>/ng-container>
</ul>
<ng-template #odd_tpl>
<li>Odd: {{number}}</li>
</ng-template>
<ng-template #even_tpl>
<li>Even: {{number}}</li>
</ng-template>
模板似乎根本无法访问数字
,但如果内联使用,它可以工作。
在下面的链接中有一个工作和不工作版本的完整例子
这是因为模板作用域的工作方式。Angular中的模板具有动态作用域,而不是常规的javascript词法作用域,这意味着ng-模板
中的{{数字}}
表达式没有指向*ngFor
中相同的数字
变量,尽管人们应该认为它会,因为您正在评估的模板表达式
如果您实际上在
AppComponent
中定义了一个 number 属性,假设 number = 42
,您可以看到里面
的所有 {{number}} 表达式
变量具有所需的值,要么以某种方式将该值传递给< code>even_tpl和< code>odd_tpl。正如@Vivek所指出的,您可以使用< code>ngTemplateOutlet和< code > ngTemplateOutletContext 来实现这一点。因此,要么应该在< code>*ngFor
的范围内定义模板,其中< code>number
看这里:在Angular 2模板中传递变量
<div *ngFor="foo in foos">
<ng-container *ngTemplateOutlet="inner; context:{name:foo}"></ng-container>
</div>
<ng-template #inner let-name="name">
{{ name }}
</ng-template>
您所需要的只是使用 [ngTemplateOutletContext]
阅读更多
以下是您如何实现这一目标的方法:
<div>
<h3>All Templates</h3>
<ul *ngFor="let number of numbers">
<ng-container [ngTemplateOutlet]='number % 2 == 0 ? even_tpl : odd_tpl' [ngTemplateOutletContext]="{number:number}"></ng-container>
</ul>
</div>
<ng-template #odd_tpl let-number='number'>
<li>Odd: {{number}}</li>
</ng-template>
<ng-template #even_tpl let-number='number'>
<li>Even: {{number}}</li>
</ng-template>
工作演示
问题内容: 我有Google地图提供的JavaScript值,需要将其保存在MySQL数据库中。 其实我有变量 我需要将该变量传递给PHP变量lugar 问题答案: 如果要在页面转换时进行操作,则可以通过表单或在URL中传递它,然后仅使用或接收变量。 如果您需要无缝完成它,那么您可能需要考虑使用AJAX。
问题内容: 我有一个使用while循环创建的按钮。所以while循环为mysql表中的每一行创建一个表行。 我为该按钮编写了一行代码,该代码针对表的每一行再次创建,并且每个按钮基于该记录具有不同的值。 问题是我想使用它并以模式查看它,以便可以使用mysqli查询检索具有相同ID的记录。 这是模态的代码。 问题答案: 如果可以,我对你是正确的。 模态触发按钮 Bootstrap Modal事件以使用
我有以下设置。我正在尝试动态加载 a.py 模块(在这种情况下从 c.py 加载,并将其调用为BeLoaded)。然后我想导入另一个模块文件B,它有一个类,该类将继承该类到BeLoaded.otherClass。我知道如果我在 b.py 中导入 c.py 可以解决问题,但由于我是动态加载 c.py,我不确定如何做到这一点。如果我可以在导入变量之前以某种方式将变量传递给 b.py,它将起作用,但我不
问题内容: 我有一个PHP会话变量,在整个会话过程中仍然有效。在开头部分,我包含了我的JavaScript文件。 如果需要以下内容,如何将会话变量传递到JavaScript文件中。 由于无法在JavaScript文件中识别出,因此上面的代码不起作用。因此,我必须放入PHP文件本身,但是如何将其保留在JavaScript文件中? 问题答案: 在您的PHP文件中,您可以将用户设置为全局变量: 在包含外
问题内容: 如果我有一个指令,我可以这样调用它 我该如何访问?我在函数中使用时会得到实际的字符串。当我检查html时,实际上说。 问题答案: 尝试 然后 演示:柱塞
问题内容: 如何在不刷新页面的情况下将变量从jQuery传递到PHP?当我单击一个复选框时,我想将一个变量从jQuery传递到PHP。我也在使用formdialog。 我的PHP代码 我的JavaScript代码 问题答案: Ajax可以做到这一点。谷歌它,并检查api.jquery.com并查看ajax函数,.ajax(),.post(),.get(),.load()等。 关于您的特定问题,这是