Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/129.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ionic3 Ionic 3从子页面的根页面运行函数_Ionic3_Angular5 - Fatal编程技术网

Ionic3 Ionic 3从子页面的根页面运行函数

Ionic3 Ionic 3从子页面的根页面运行函数,ionic3,angular5,Ionic3,Angular5,与离子3一起工作 根页面app.component.ts: ... export class MyApp { @ViewChild('myNav') nav: NavController rootPage:any = HomePage; sdata = []; getListName(){ //returns an array a list for menu names //sdata } } app.html: <ion-menu [content]

与离子3一起工作

根页面app.component.ts:

...
export class MyApp {
  @ViewChild('myNav') nav: NavController
  rootPage:any = HomePage;
  sdata = [];
  getListName(){
    //returns an array a list for menu names 
   //sdata
  }
}
app.html:

<ion-menu [content]="content">
  <ion-header>
    <ion-toolbar>
      <ion-title>Μενού</ion-title>
    </ion-toolbar>
  </ion-header>

<ion-content>
  <ion-list>
    <button menuClose ion-item class="menulist elvtitles" *ngFor="let p of sdata" (click)="toElevator(p.elevatorID)">
      <ion-icon name="construct"></ion-icon> {{p.address}}
     </button>
  </ion-list>
</ion-content>

</ion-menu>
<ion-nav #myNav [root]="rootPage" #content swipeBackEnabled="false"></ion-nav>
<child-register (intervalFired)="onIntervalFired($event)"></child-register>
到目前为止,我尝试使用输出方法,但下面的方法不起作用:

export class ChildPage {
  @Output() intervalFired = new EventEmitter<any>();  
  refresh(){
     ...
     this.intervalFired.emit(dataAll);
  }
}
导出类子页面{
@Output()intervalFired=neweventemitter();
刷新(){
...
this.intervalFired.emit(dataAll);
}
}
在app.html中:

<child-register (intervalFired)="onIntervalFired($event)"></child-register>


{{p.address}}
但一切都不起作用

我需要的是以某种方式调用子页面中的父(app.component)函数。
我想我的问题很清楚,如果不是问我细节的话。如有任何意见或指示,将不胜感激

有两种方法

  • 创建服务并在应用程序(父应用程序)子应用程序组件中注入或使用
  • 使用事件(发布/订阅)方法
  • 范例

    子页面

    import { Events } from 'ionic-angular';
    
    export class ChildPage {
    
        constructor(public events: Events) {}
        ChildPage() {
          console.log('Child Page!')
          this.events.publish('menu:update');
        }
    }
    
    import { Events } from 'ionic-angular';
    
    export class MyApp {
    
        constructor(public events: Events) {
          events.subscribe('menu:update', () => {
             this.getListName()
          });
        }
      @ViewChild('myNav') nav: NavController
      rootPage:any = HomePage;
      sdata = [];
      getListName(){
        //returns an array a list for menu names 
       //sdata
      }
    }
    
    应用程序/父页面

    import { Events } from 'ionic-angular';
    
    export class ChildPage {
    
        constructor(public events: Events) {}
        ChildPage() {
          console.log('Child Page!')
          this.events.publish('menu:update');
        }
    }
    
    import { Events } from 'ionic-angular';
    
    export class MyApp {
    
        constructor(public events: Events) {
          events.subscribe('menu:update', () => {
             this.getListName()
          });
        }
      @ViewChild('myNav') nav: NavController
      rootPage:any = HomePage;
      sdata = [];
      getListName(){
        //returns an array a list for menu names 
       //sdata
      }
    }
    

    如果方法应该由双方共享和使用,为什么不只做共享服务并允许两个组件都使用它呢?我在你之前找到了答案,我做了一些与你类似的事情。我没有测试您的代码,但我认为这是正确的。@很高兴听到您的问题已经解决