如果我们不想将属性指令绑定到组件字段,为什么需要括号。
例如以下代码为何不起作用的原因:
<ng-template ngIf=false>
<h3>Test</h3>
</ng-template>
如果我们使用方括号([ngIf] = false),它可以工作,但是据我所知,当我们要将http标记属性或指令绑定到组件变量时使用方括号
例如ngClass指令在没有括号的情况下工作正常:
<h2 ngClass='myclass'>title</h2>
答案 0 :(得分:0)
简短答案:使用不带方括号的ngIf时-您将评估字符串。 并且由于除空字符串以外的任何其他字符串的求值结果都为true,因此会显示该元素。
详细答案:
当您将*ngIf="boolean"
放在元素上(例如div)时,则与执行此操作完全相同:
<ng-template [ngIf]="boolean">
<div> ... </div>
</ng-template>
到目前为止,您可以并且很可能已经从angular documentation阅读了此内容。
奇怪的是,您不想加糖,而是直接使用ng-template
。
现在您要问,如果我实际上拆掉支架,扔掉单向装订,会发生什么情况。并简单地为该ngIf指令设置一个值。
当您在元素上使用其他属性时,发生的确切行为是什么。例如[class]
。如果您在元素上使用[class]="text-red"
。您将在您的元素上获得一个名为undefined的类。您只是尝试使用未定义的对象作为类名。
因此,如果我们假设此CSS规则有效:
.text-red { color: red }
不使用方括号时,它需要一个字符串。
<div class="text-red"> I AM RED </div> // text is red
在使用方括号时,它需要一个表达式,请添加撇号来表示字符串。
<div [class]="'text-red'"> I AM RED </div> // text is red
希望这会使事情更清楚