我从可观察到的地方得到boolean值。我想把它打印出来。但没什么能给我印出来的。
这是我的订阅:
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;
});
}这是我的模板:
<div *ngIf="($showLeftNavi | async) !== 'null'">
soo {{ $showLeftNavi }} //nothing prints here.
</div>那么,如何在这里检查null并打印我的Boolean值呢?
发布于 2019-07-05 12:33:57
您不需要async管道,因为showLeftNavi是不可观察的或许诺的。
异步管道订阅一个可观察的或承诺,并返回它发出的https://angular.io/api/common/AsyncPipe的最新值。
<div *ngIf="showLeftNavi$">
soo {{ showLeftNavi$ }} //nothing prints here.
</div>在一个地方使用showLeftNavi$,在另一个地方使用$showLeftNavi。
发布于 2019-07-05 12:32:36
而不是*ngIf="($showLeftNavi | async) !== 'null'",尝试一下*ngIf="$showLeftNavi | async"
尽管如此,变量$showLeftNavi似乎并不是可观察的,所以| async是不必要的。
发布于 2019-07-05 12:54:31
正如前面提到的答案异步适用于可观测的,但是我不认为他们的答案会像您想要的那样工作(如果您只是去掉异步,那么您只会得到布尔值的第一个值,不管您的可观察的触发次数是多少次)。this.store.pipe(select(ObservableActions.getNaviState))是您希望将async管道分配给的内容如下:
$showLeftNavi: Observable<boolean>;
constructor(private store: Store<StateShared>) { }
ngOnInit() {
this.$showLeftNavi = this.store.pipe(select(ObservableActions.getNaviState));
}(您的html没有更改)
https://stackoverflow.com/questions/56903064
复制相似问题