【问题标题】:Angular 2 (+Dart) inline conditionals: Is the second condition evaluated if the first is false? How to solve?Angular 2 (+Dart) 内联条件:如果第一个条件为假,是否评估第二个条件?怎么解决?
【发布时间】:2017-04-07 03:59:40
【问题描述】:

这是我的component.html(Angular Dart 模板)中的代码:

<div *ngIf="selectedOffer!=null && !selectedOffer.isBotenOffer">...</div>

这是我得到的例外:

例外:NoSuchMethodError:调用了 getter 'isBotenOffer' 无效的。接收方:null 尝试调用:isBotenOffer

selectedOffer 我有时是null。但是,如果第一个语句为假,为什么要评估第二个语句?我怎样才能最好地解决这个问题?

【问题讨论】:

    标签: angular dart angular-dart angular-template


    【解决方案1】:

    Angular 会将其写入生成的模板文件中:

    _NgIf_0_5.ngIf = ((ctx.selectedOffer != null) && !ctx.selectedOffer.isBotenOffer);

    所以如果selectedOffernull,它不应该评估selectedOffer.isBotenOffer。但是,您可能遇到了刚刚在 dart2js 中修复的错误:https://github.com/dart-lang/sdk/commit/fe7baee84828e109a49920c2572f3917e5ff8ca5

    如果您在组件的构造函数中设置selectedOffer,但在构造函数中提前返回,您可能会遇到此问题。

    【讨论】:

      【解决方案2】:

      不,&amp;&amp; 短路评估会在第二部分为 false 时停止评估第二部分 - 与普通 Dart 代码相同。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-11-26
        • 2018-04-18
        • 2020-06-26
        • 2013-05-12
        • 2015-01-04
        • 2021-01-28
        • 2014-12-30
        • 1970-01-01
        相关资源
        最近更新 更多