如何从状态观察者变量获取长度?

问题描述 投票:0回答:1

我正在学习 NgRx,我需要替换这个模板代码:

<ion-button *ngIf="myVar.length > 0" ...  > 

对于从状态观察器获取值的代码:

myVar$: Observable<string> = this.store.select(mySelector);

所以我用谷歌搜索了一下,发现了很多这样的例子:

<ion-button *ngIf="(myVar$ | async)?.length > 0" ... > 

但是后来我得到了这个编译错误:

[ng] Error: src/app/myModule/myPage.page.html:25:26 - error TS2532: Object is possibly 'undefined'.

互联网上有很多这样的例子。为什么我的不起作用?这是某种应该现代化的“旧形式的编码”吗?现在正确的做法是什么?

javascript angular ngrx
1个回答
0
投票

抛出此错误是因为您尝试访问可能未定义的对象的 length 属性。

您可以使用 Angular 安全导航运算符(?):

<ion-button *ngIf="(myVar$ | async)?.length > 0" ... >

此语法是正确的,但是,TypeScript 严格的 null 检查仍可能会引发错误,因为它不能保证长度始终存在。

要解决 TypeScript 错误,您可以在 length 之后添加非空断言 (!):

<ion-button *ngIf="(myVar$ | async)?.length! > 0" ... >
© www.soinside.com 2019 - 2024. All rights reserved.