弹出窗口在错误的页面上打开

Popover opens on wrong Page

我在单击标签时在一页上创建弹出窗口。它应该在那里打开,并且在使用选项卡作为导航时可以正常工作。现在,我将选项卡导航从 tabmodule 更改为 app-routing.module,因为我希望选项卡显示在每个页面上。现在,当我点击标签(“bewertung”)打开弹出窗口(“rateus”)时,它没有显示在应该打开的第 5 个选项卡(“more”)中,但是,当我导航时到第一个选项卡(“主页”),它在那里打开,我无法与之交互。

more.page.ts

import { Component, OnInit } from '@angular/core';
import { ModalController, NavController, PopoverController } from '@ionic/angular'
import { RateusPage } from 'src/app/popover/rateus/rateus.page';

@Component({
  selector: 'app-more',
  templateUrl: './more.page.html',
  styleUrls: ['./more.page.scss'],
})
export class MorePage implements OnInit {

  constructor(
    private popoverController: PopoverController,
    private modalController: ModalController
  ) { }

  ngOnInit() {
  }

  async presentPopover() {
    console.log('I got clicked')
    const popover = await this.popoverController.create({
      component: RateusPage,
    });
    popover.present();
  }
}

rateus.page.html

<ion-item>
  <ion-label>
    Bewertung
  </ion-label>
</ion-item>
<ion-content padding>
  <ion-button expand="full" (click)=rateusDismiss()>Close</ion-button>
</ion-content>

rateus.page.ts

import { Component, OnInit } from '@angular/core';
import { PopoverController } from '@ionic/angular';

@Component({
  selector: 'app-rateus',
  templateUrl: './rateus.page.html',
  styleUrls: ['./rateus.page.scss'],
})
export class RateusPage implements OnInit {

  constructor(private popoverController: PopoverController) { }

  ngOnInit() {
  }

  rateusDismiss(){
    console.log("dismiss")
    this.popoverController.dismiss();
  }
}

您应该将单击发生的浏览器事件添加到弹出窗口控制器,以便 ionic 知道将弹出窗口放置在 DOM 中的什么位置。

async presentPopover(event: Event) {
    console.log('I got clicked')
    const popover = await this.popoverController.create({
      component: RateusPage,
      event: event
    });
    popover.present();
  }

并在您的 HTML 中调用函数

<ion-button expand="full" (click)=presentPopover($event)>Open popover</ion-button>

编辑:我终于找到了问题所在,我的 app.component.html 看起来像这样:

<ion-app>
  <ion-router-outlet></ion-router-outlet>
</ion-app>

<ion-tabs>
  <ion-tab-bar slot="bottom">
    
    <ion-tab-button tab="home">
      <ion-icon name="home"></ion-icon>
      <ion-label>Home</ion-label>
    </ion-tab-button>

    <ion-tab-button tab="shop">
      <ion-icon name="cart"></ion-icon>
      <ion-label>Shop</ion-label>
    </ion-tab-button>

    <ion-tab-button tab="inbox" (click)="loginrequired()">
      <ion-icon name="mail"></ion-icon>
      <ion-label>Postfach</ion-label>
    </ion-tab-button>

    <ion-tab-button tab="profile" (click)="loginrequired()">
      <ion-icon name="person"></ion-icon>
      <ion-label>Profile</ion-label>
    </ion-tab-button>

    <ion-tab-button tab="more">
      <ion-icon name="ellipsis-horizontal"></ion-icon>
      <ion-label>Mehr</ion-label>
    </ion-tab-button>
  </ion-tab-bar>
</ion-tabs>

但它必须看起来像这样:

<ion-app>

  <ion-router-outlet></ion-router-outlet>

  <ion-tabs>

    <ion-tab-bar slot="bottom">

      

      <ion-tab-button tab="home">

        <ion-icon name="home"></ion-icon>

        <ion-label>Home</ion-label>

      </ion-tab-button>

      <ion-tab-button tab="shop">

        <ion-icon name="cart"></ion-icon>

        <ion-label>Shop</ion-label>

      </ion-tab-button>

      <ion-tab-button tab="inbox" (click)="loginrequired()">

        <ion-icon name="mail"></ion-icon>

        <ion-label>Postfach</ion-label>

      </ion-tab-button>

      <ion-tab-button tab="profile" (click)="loginrequired()">

        <ion-icon name="person"></ion-icon>

        <ion-label>Profile</ion-label>

      </ion-tab-button>

      <ion-tab-button tab="more">

        <ion-icon name="ellipsis-horizontal"></ion-icon>

        <ion-label>Mehr</ion-label>

      </ion-tab-button>

    </ion-tab-bar>

  </ion-tabs>

</ion-app>