Description
Prerequisites
- I have read the Contributing Guidelines.
- I agree to follow the Code of Conduct.
- I have searched for existing issues that already report this problem, without success.
Ionic Framework Version
v8.x
Current Behavior
When creating a popover with the popoverController and an Angular component, the height of the popover is calculated before Angular's change detection cycle is run. This means that if you are passing content into the popover, the height will be calculated incorrectly and the popover will be positioned wrong.
This mainly shows up when putting the popover in a footer as the offset is calculated using the content height.
Expected Behavior
Ionic shouldn't calculate the content height of the popover before a change detection cycle has run so that any height changes caused by component props will be reflected.
Steps to Reproduce
const popover = await this.popoverController.create({
component: PopoverContentComponent,
componentProps: { message: "some multiline content" },
event: { target: element } as unknown as Event, // an element in a footer
});
import { Component, Input } from '@angular/core';
import { CommonModule } from '@angular/common';
@Component({
selector: 'popover-content',
standalone: true,
imports: [CommonModule],
templateUrl: './popover-content.component.html',
styleUrl: './popover-content.component.scss',
})
export class PopoverContentComponent {
@Input() message = '';
}
<div class="popover-content">
<p>{{ message }}</p>
</div>
Code Reproduction URL
Ionic Info
Ionic:
Ionic CLI : 7.2.0 (\AppData\Roaming\nvm\v18.20.3\node_modules@ionic\cli)
Ionic Framework : @ionic/angular 8.2.7 (\node_modules@ionic\angular)
@angular-devkit/build-angular : 18.2.12 (\node_modules@angular-devkit\build-angular)
@angular-devkit/schematics : 18.2.12 (\node_modules@angular-devkit\schematics)
@angular/cli : 18.2.12 (\node_modules@angular\cli)
@ionic/angular-toolkit : not installed
Capacitor:
Capacitor CLI : not installed
@capacitor/android : 6.1.0 (\node_modules@capacitor\android)
@capacitor/core : 6.1.0 (\node_modules@capacitor\core)
@capacitor/ios : 6.1.0 (\node_modules@capacitor\ios)
Utility:
cordova-res : not installed globally
native-run : not installed globally
System:
NodeJS : v18.20.3 (C:\Program Files\nodejs\node.exe)
npm : 10.7.0
OS : Windows 10
Additional Information
No response