Angular Ivy strictTemplates true不能将 'boolean | null'类型分配给 'boolean'类型

标签 angular angular-ivy

我已经将我的应用更新为9版本。
一切都很好,但我有问题
将strictTemplates设置为true。
例如此代码

loaded$: Observable<boolean>
[loaded]="loaded$ | async"
@Input() loaded!: boolean;

我遇到错误类型' bool 值|不能将“null”分配给“boolean”类型。

这修复了错误
@Input() loaded!: boolean | null;

但是我看不到有人可以解释我的意思,好吗?

最佳答案

原因是因为异步管道始终返回签名,就像<T>(input$: Observable<T>): T | null一样,因为它在等待异步调用的响应时向模板返回null。

关于此的更多信息:https://angular.io/guide/template-typecheck#strict-null-checks

您可以执行已完成的操作并允许null,或者如果您知道它永远不会为null,请使用非null断言运算符:

[loaded]="(loaded$ | async)!"

或在此处禁用类型检查:
[loaded]="$any(loaded$ | async)"

或者对于这种特殊情况,您可能可以执行以下操作:
[loaded]="(loaded$ | async) || false"

关于Angular Ivy strictTemplates true不能将 'boolean | null'类型分配给 'boolean'类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61780339/

相关文章:

启用 ivy 时的 Angular 循环依赖

angular - ngFor 产生空内容 - Angular 7 IVY

ag-grid-angular - 使用 Ivy 的 Angular 8 中的 AG Grid 模块导入错误

angular - 基于 angular 9 迁移的 angular 生产问题

angular - 如何避免Angular和Spring boot项目中的CORS问题?

angular - ng 构建 : Workspace config file cannot be loaded

javascript - 在数组对象中过滤数组后的返回值

angular - 无法使用Ivy将@Input装饰器与查询装饰器组合

node.js - Webpack @font-face 相对路径问题

angular - Ionic 4 ion-content 滚动到底部