我按照指南从 TSLint 迁移到 ESLint 。现在,我收到此错误消息:
不应该否定异步管道。使用 (observable | async) === (false | null | undefined) 来检查它的值
这是给定的解释:
Angular 的异步管道在 observable 发出任何值或 promise 解析之前最初发出 null。这可能会导致否定,例如 *ngIf=”!(myConditional | async)” 破坏布局并导致昂贵的副作用,例如触发不应显示的组件的 XHR 请求。
但我不理解建议的解决方案,尤其是按位 OR : false | null | undefined
。当我尝试(false | null | undefined)
在模板中编写时,Angular 似乎将null
andundefined
视为管道(这似乎是合法的)并抛出错误消息。即使在 html 模板之外,这个按位 OR 也只返回 0,那么有什么意义呢?我也试过false || null || undefined
,但它实际上相当于undefined
我错过了什么 ?还是错误信息具有误导性?那我该怎么写呢?
我拥有的最好的是这个,但它很丑:
(observable | async) === false || (observable | async) === undefined