Html ngif保持为false,即使其值是正确的
我的代码如下所示: 组件技术Html ngif保持为false,即使其值是正确的,html,angular,typescript,redux,store,Html,Angular,Typescript,Redux,Store,我的代码如下所示: 组件技术 export class ViewScaleComponent implements OnInit { private range$: Observable<number>; constructor(private store: Store<AppState>) {} ngOnInit() { this.range$ = this.store.select(x => x.view.range);
export class ViewScaleComponent implements OnInit {
private range$: Observable<number>;
constructor(private store: Store<AppState>) {}
ngOnInit() {
this.range$ = this.store.select(x => x.view.range);
}
}
然后我得到:
on init [object Object]
undefined
21
最后两个控制台日志来自同一行(do()
)。我想知道第一个未定义的是否是不显示di
的原因
值得注意的是,有时它是有效的(我看到div
和range$
的值正在按预期更新)
有什么想法吗
PS:我读了,但是可观察的和async
的组合看起来和我的非常相似。你不需要ngIf
,只要把{range$|async}}
更新
range:any ;
ngOnInit() {
this.store.select(x => x.view.range).subscribe(x => this.range = x);
}
模板
<div *ngif="range">
here {{ range }}
</div>
这里{{range}}
如果我不使用ngif
,将出现div
,但数据插值将为空。另外,在您的回答中,什么是范围
?您从组件获得的范围,如果您不希望div出现,请使用ng container
查看我的更新答案。但我只有一个可观察的范围$
。嗯,你说ng集装箱是什么意思?我是一个初学者,你能提供一个例子吗?范围是一个可观察的,使用异步过滤器将其转换为一个热可观察的,这样它可以发出数据,或者如果你感到困惑,你可以订阅存储并获得更好的数据,正如你所说的,你是一个初学者,你应该采取一些小步骤。关于ohh的更多信息对不起,我完全忘记了变量,它应该是range$
而不是range
我的BAD请发布正确的语法。我在这里看到了*ngif=“range$| async)”
至少有两个错误。如果您提供了最低限度的复制,这将很容易为您提供帮助。我在Plunker@yurzui上尝试过,但我很难模拟提供数据的存储。我应该注意我是初学者。我可以帮你,只需将你的代码添加到plunker中,然后单击Fork
range:any ;
ngOnInit() {
this.store.select(x => x.view.range).subscribe(x => this.range = x);
}
<div *ngif="range">
here {{ range }}
</div>