首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >*ngIf -如何在模板中执行空签

*ngIf -如何在模板中执行空签
EN

Stack Overflow用户
提问于 2019-07-05 12:28:23
回答 4查看 6.1K关注 0票数 0

我从可观察到的地方得到boolean值。我想把它打印出来。但没什么能给我印出来的。

这是我的订阅:

代码语言:javascript
复制
showLeftNavi$: boolean;

    constructor(private store: Store<StateShared>) { }

    ngOnInit() {
        this.store.pipe(select(ObservableActions.getNaviState)).subscribe(data => {
            console.log('data', data); //getting true
            this.showLeftNavi$ = data;
        });
    }

这是我的模板:

代码语言:javascript
复制
<div *ngIf="($showLeftNavi | async) !== 'null'">
    soo {{ $showLeftNavi }} //nothing prints here.
</div>

那么,如何在这里检查null并打印我的Boolean值呢?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2019-07-05 12:33:57

您不需要async管道,因为showLeftNavi是不可观察的或许诺的。

异步管道订阅一个可观察的或承诺,并返回它发出的https://angular.io/api/common/AsyncPipe的最新值。

代码语言:javascript
复制
<div *ngIf="showLeftNavi$">
    soo {{ showLeftNavi$ }} //nothing prints here.
</div>

在一个地方使用showLeftNavi$,在另一个地方使用$showLeftNavi

票数 3
EN

Stack Overflow用户

发布于 2019-07-05 12:32:36

而不是*ngIf="($showLeftNavi | async) !== 'null'",尝试一下*ngIf="$showLeftNavi | async"

尽管如此,变量$showLeftNavi似乎并不是可观察的,所以| async是不必要的。

票数 1
EN

Stack Overflow用户

发布于 2019-07-05 12:54:31

正如前面提到的答案异步适用于可观测的,但是我不认为他们的答案会像您想要的那样工作(如果您只是去掉异步,那么您只会得到布尔值的第一个值,不管您的可观察的触发次数是多少次)。this.store.pipe(select(ObservableActions.getNaviState))是您希望将async管道分配给的内容如下:

代码语言:javascript
复制
$showLeftNavi: Observable<boolean>;

    constructor(private store: Store<StateShared>) { }

    ngOnInit() {
        this.$showLeftNavi = this.store.pipe(select(ObservableActions.getNaviState));
    }

(您的html没有更改)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56903064

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档