我想通过点击按钮来显示或隐藏部分。我不想在控制器中创建变量。有没有办法通过使用本地模板变量(使用#variableName
)?
我在想下面的事情。
但为此,我得到template parse error
。
<button color="primary" #showSection1="true" (click)="!showSection1;">Toggle</button>
<p *ngIf="showSection1">
This should be shown or hidden on click of the button.
</p>
答案 0 :(得分:7)
你不能这样做,因为模板变量在你声明它时会存储整个button
元素,但你可以在这里利用三元运算符:
<button (click)="showSection1 ? showSection1 = false : showSection1 = true;">Toggle</button>
<p *ngIf="showSection1">
This should be shown or hidden on click of the button.
</p>
当showSection1
未定义或具有错误值时,它将设置为true,反之亦然。
这里有效Plunker。
答案 1 :(得分:2)
如果您想以一种适用于AOT(制作)编辑的方式执行此操作,我建议使用模板参考变量。对于我的示例,我希望在关闭时将类open
应用于我的元素,并在再次单击时删除它。基本上,我想在我的元素上切换open
类。在我看来,将这个状态数据存储在我的component.ts文件中是很难看的。
为实现这一目标,我将执行以下操作。
<li class="tagTag"
*ngFor="let tag of tagCategory.tags"
[ngClass]="{'open': toggle.value}"
#toggle [value]="false"
(click)="toggle.value = !toggle.value">...</li>
#toggle
将<li>
实例存储为名为“toggle”的模板引用变量。然后我使用value
指令并赋值false
。使用click处理程序,我将value指令的值设置为true和false。我的[ngClass]
根据此模板引用上的value指令的当前值添加或删除open类。这适用于提前编译,并允许您将多余的变量保留在组件之外。请小心使用它,因为几乎通常,您不希望在模板中定义变量。
答案 2 :(得分:0)