我已经将我的应用更新为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/