我有一个正在运行的 Angular 应用程序,现在似乎出现了重大变化,并且
*ngIf
只接受布尔值,而不将假/真值转换为布尔值。
但是,我在文档中找不到任何内容,也无法在互联网搜索中找到任何内容,所以,似乎我是唯一经历过这种情况的人。但后来我不知道这是如何/为什么会发生。
<pre><code>{{ arr?.length }}</code></pre>
<pre *ngIf="arr?.length">has length (value)</pre>
<pre *ngIf="!!arr?.length">has length (bool)</pre>
<pre *ngIf="!arr?.length">has no length (bool)</pre>
原来它不是 Angular 本身,而是在 NgBootstrap Accordion 组件内,并且我没有用
<ng-template>
包裹我的内容在 ngbAccordionBody
中。
错误:
...
<div ngbAccordionBody>
<pre *ngIf="arr?.length">has length (value)</pre>
</div>
正确:
...
<div ngbAccordionBody>
<ng-template>
<pre *ngIf="arr?.length">has length (value)</pre>
</ng-template>
</div>
这对我来说似乎是过度设计的,但这超出了范围。终于成功了。