在 ionic 2/3 中获取相同模态的多个实例
Getting multiple instance of same modal in ionic 2/3
在我的 app.component 中,我有一个后台模式服务,当通过 intent 共享时,它会向行为 Subject
抛出值
this._notification.setNotiService2(data.extras);
登录后,我将根设置为 TabsPage
this.appCtrl.getRootNav().setRoot('TabsPage');
在选项卡页面上,我已经订阅了行为主题,所以每当我获得一个共享对象时,我都会处理它并打开一个显示所需值的模式。
最初,当应用程序打开时,一切正常。但是一旦我们 login/logout 问题就出现了。注销时,我将根页面设置为登录页面。
this.appCtrl.getRootNav().setRoot('LoginPage');
然后在成功登录后再次将 root 设置为 Tabs Page
this.appCtrl.getRootNav().setRoot('TabsPage');
现在,如果我通过 Intent 共享值,Modal 的多个实例将以完全相同的值打开。
我已检查行为主题是否为 null/undefined,但订阅值仅为 Ok only。从 TabsPage 内的行为主题记录值,我发现同一个函数(订阅的行为主题)被调用了两次。
同样,如果我 logout/login 模态框打开 3 次,并且数量继续相应增长。
在我看来,您没有记得取消订阅,这意味着每次订阅都会增加。因此,每当您离开页面时,请记住取消订阅(所有)您的订阅。由于您使用的是 Ionic,因此 ionViewWillLeave
挂钩将是取消订阅的合适位置...因此在您的页面上声明一个新订阅并...
import { Subscription } from 'rxjs/Subscription';
// ...
mySubscription = new Subscription();
// ...
this.mySubscription = this.myService.mySubject.subscribe(....)
// ...
ionViewWillLeave() {
this.mySubscription.unsubscribe();
}
在我的 app.component 中,我有一个后台模式服务,当通过 intent 共享时,它会向行为 Subject
抛出值this._notification.setNotiService2(data.extras);
登录后,我将根设置为 TabsPage
this.appCtrl.getRootNav().setRoot('TabsPage');
在选项卡页面上,我已经订阅了行为主题,所以每当我获得一个共享对象时,我都会处理它并打开一个显示所需值的模式。 最初,当应用程序打开时,一切正常。但是一旦我们 login/logout 问题就出现了。注销时,我将根页面设置为登录页面。
this.appCtrl.getRootNav().setRoot('LoginPage');
然后在成功登录后再次将 root 设置为 Tabs Page
this.appCtrl.getRootNav().setRoot('TabsPage');
现在,如果我通过 Intent 共享值,Modal 的多个实例将以完全相同的值打开。 我已检查行为主题是否为 null/undefined,但订阅值仅为 Ok only。从 TabsPage 内的行为主题记录值,我发现同一个函数(订阅的行为主题)被调用了两次。
同样,如果我 logout/login 模态框打开 3 次,并且数量继续相应增长。
在我看来,您没有记得取消订阅,这意味着每次订阅都会增加。因此,每当您离开页面时,请记住取消订阅(所有)您的订阅。由于您使用的是 Ionic,因此 ionViewWillLeave
挂钩将是取消订阅的合适位置...因此在您的页面上声明一个新订阅并...
import { Subscription } from 'rxjs/Subscription';
// ...
mySubscription = new Subscription();
// ...
this.mySubscription = this.myService.mySubject.subscribe(....)
// ...
ionViewWillLeave() {
this.mySubscription.unsubscribe();
}