【发布时间】:2018-04-13 02:23:57
【问题描述】:
我想将应用组件中的事件发布到要订阅该事件的任何页面。
(src/app/app.component.ts)
import { Component, ViewChild } from '@angular/core';
import { Nav, App, Events } from 'ionic-angular';
@Component({
templateUrl: 'app.html'
})
export class MyApp{
logged: boolean = true; // Just for example
constructor(app: App, events: Events){
this.events.publish('app:user', this.logged);
}
}
(src/pages/sandbox/sandbox.ts)
import { Component } from '@angular/core';
import { IonicPage, NavController, NavParams, Events } from 'ionic-angular';
@IonicPage()
@Component({
selector: 'page-sandbox',
templateUrl: 'sandbox.html',
})
export class SandboxPage{
constructor(
public navCtrl: NavController,
public navParams: NavParams,
public events: Events) {
console.log('Subscribing the event!');
this.events.subscribe('app:user', logged => {
console.info(logged);
});
}
}
什么都没有发生。我没有得到控制台日志输出,也没有任何错误。有什么我遗漏的吗?
【问题讨论】:
-
你将从 MyApp 转到 SandboxPage
-
@Utpaul:是的,我希望 MyApp 将数据传输到 SandboxPage。
-
您需要发出一些东西才能接收(订阅)。尝试将订阅从构造函数移动到生命周期事件。
-
@August 我没有使用变量“this.logged”。我想将该布尔值发送到 SandboxPage 或任何其他变量。
标签: angular ionic-framework ionic3 angular5