【问题标题】:Ionic 3: Events not working from app componentIonic 3:事件在应用程序组件中不起作用
【发布时间】: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


【解决方案1】:

不知何故,我用这种方法得到了它,但我不得不相信应该有更好的东西。

(src/app/app.component.ts)

this.events.subscribe('app:getUser', () => {
    console.log('Publish the event!');
    this.events.publish('app:sendUser', true);
});

(src/pages/sandbox/sandbox.ts)

console.log('Subscribing the event!');
this.events.subscribe('app:sendUser', logged => {
    console.info(logged);
});

this.events.publish('app:getUser');

【讨论】:

    猜你喜欢
    • 2018-10-28
    • 2023-03-11
    • 2019-03-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-29
    • 2019-06-06
    • 1970-01-01
    相关资源
    最近更新 更多