【问题标题】:Angular simple ngIf inverted?Angular 简单 ngIf 倒置?
【发布时间】:2019-06-29 15:42:47
【问题描述】:

自制导航栏。环境包含具有如下定义的下拉元素的列表:

      {
      title: 'Overview', isDropped: false, Links: [
        {linkTitle: 'What is Hunter', linkRoute: '/whatishunter'},
        {linkTitle: 'What is a Hard Problem', linkRoute: '/hardproblem'},
        {linkTitle: 'Real World Applications', linkRoute: '/realapps'},
        {linkTitle: 'Using Hunter', linkRoute: '/usingHunter'}
        ]
      },

导航栏 html 循环 (ngFor) 用于导航栏该部分中的每个下拉菜单;添加的 leftdropdown 被删除以显示正在发生的事情:

<div class="positionLeft" [ngStyle]="{'z-index': '2', 'height': '50px'}">
<div *ngFor="let leftdropdown of barContents.leftMenus">
  <app-navdropdown [title]="[leftdropdown.title]" [isDropped]="[leftdropdown.isDropped]"
                   [links]="[leftdropdown.links]"></app-navdropdown>
          added leftdropdown isdropped = {{leftdropdown.isDropped}}
</div>

“leftdropdown”元素来自上面的环境列表。 component.ts 是:

它的简单 HTML 是(带有额外的诊断文本):

所以当应用程序运行时,我们看到输出 html 为:

请注意此处的调试控制台:

为了确定,我可以手动将 isDropped 更改为 true 并显示“if 块”。 明显的错误是 *ngIf 正在反转 isDropped 表达式????

关于什么是误解或简单的语法错误的任何线索?
感谢您的时间和建议。 查克(瑜伽士)

【问题讨论】:

  • [isDropped]="[leftdropdown.isDropped]" 右侧方括号的作用是什么?
  • 使用 ngOnchanges 检查来自输入装饰器的值
  • dee zg -- 这似乎就是答案。我从来不明白什么时候需要右方括号。我认为它将被视为不带括号的字符串“leftdropdown.isDropped”。我认为方括号强制表达式评估。 ... dee zg 如果您想给出答案,也许可以帮助我理解何时需要括号,我很乐意将其标记为正确答案。谢谢。
  • [isDropped] 中的括号告诉 Angular 计算右侧的绑定表达式,如 the documentation 中所述。

标签: html angular angular-ng-if


【解决方案1】:

感谢各种cmets;我终于意识到我对方括号的困惑是关于表达式的左侧或右侧。在左侧使用(或不使用)方括号会改变评估右侧的方式。 (我认为它们需要应用于右侧 - 错误。) 在仔细(并反复)查看 angular.io 中的属性绑定文档之后,我明白了以上内容。
感谢所有添加注释的人。

【讨论】:

    猜你喜欢
    • 2016-09-03
    • 2019-04-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-12
    • 2018-04-25
    • 2013-12-06
    • 2018-09-19
    相关资源
    最近更新 更多