如何在角度2中创建布尔模板变量?

时间:2017-01-18 19:07:44

标签: angular angular2-template

我想通过点击按钮来显示或隐藏部分。我不想在控制器中创建变量。有没有办法通过使用本地模板变量(使用#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>

3 个答案:

答案 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)

你可以在下面使用,

glDrawElements(GL_LINES, 400, GL_UNSIGNED_INT, 0);

这是Plunker !!

希望这会有所帮助!!