【发布时间】:2018-08-16 11:55:50
【问题描述】:
在使用 Ionic 3 应用程序时,我遇到了一个问题,当您从 ngOnInit 中的服务订阅 observable 并将局部变量更新到其中时,它不会更新视图。
例如
HTML 模板
<p>{{myVariable}}</p>
constructor(myService: MyService) {
}
ngOnInit() {
this.myService.myObservable.subscribe((data) => {
this.myVariable = data;
});
}
但是当你从构造函数做同样的事情时,它会起作用。
contructor(myService: MyService) {
this.myService.myObservable.subscribe((data) => {
this.myVariable = data;
});
}
它是一个 Ionic 3 应用程序。它包含不同的离子标签。问题是当您订阅ngOnInit 时视图不会自动更新。您可以在选项卡之间切换以使其正常工作。但是当您订阅constructor 时,它无需切换标签即可工作。
知道为什么会这样。任何提示将不胜感激。谢谢。
【问题讨论】:
-
因为在构造函数中,服务被注入,所以它直接注入服务到组件,在
ngOnInit()它没有发生.. -
你能在stackblitz中展示一个例子吗?没有理由让它在 ngOnInit 中不起作用
-
如何从服务中发出可观察数据?你能添加那个代码吗?
-
在 ionic
ngOnInit我相信只会被调用一次,最初是在视图导航到时。另一方面,构造函数似乎总是被调用。 -
@alphapilgrim 构造函数并不总是被调用——它是一个构造函数。每个组件实例只调用一次(并且构建在 Angular 生命周期之外)。
标签: angular ionic-framework ionic3 observable