A powerful cross-platform UI toolkit for building native-quality iOS, Android, and Progressive Web Apps with HTML, CSS, and JavaScript.
fix(angular): do not create duplicate menuController instances (#28343)
Issue number: resolves #28337 --------- <!-- Please do not submit updates to dependencies unless it fixes an issue. --> <!-- Please try to limit your pull request to one type (bugfix, feature, etc). Submit multiple pull requests if needed. --> ## What is the current behavior? <!-- Please describe the current behavior that you are modifying. --> Duplicate instances of `menuController` are being created in `@ionic/angular`. `ion-menu` registers itself in the `menuController` from `@ionic/core`, but the `MenuController` from `@ionic/angular` uses the `menuController` from `@ionic/core/components`. This is how the overlay providers work too. Normally, this is not a problem. However, `menuController` caches references to registered menus in each controller instances: https://github.com/ionic-team/ionic-framework/blob/dcbf45101f4c0dc3541cd4c19186daa3766a6ce7/core/src/utils/menu-controller/index.ts#L14 This means that since there are two different controllers, `menuController` B does not know about the menus in `menuController` A. The end result is that the menu controller used in developer applications did not have references to the registered menus, which gave the impression that the menu controller did not work. ## What is the new behavior? <!-- Please describe the behavior or changes that are being added by this PR. --> - Updated the architecture of `MenuController` in Ionic Angular to accept a `menuController` instance. This allows `@ionic/angular` to pass the `menuController` from `@ionic/core` and for `@ionic/angular/standalone` to pass the `menuController` from `@ionic/core/components`. Note: Overlay controllers don't **need** this change per-se since they don't cache references to overlays internally (they just query the DOM). However, I think it would be good to have a consistent architecture here, so I'll put up a separate PR that makes this change for overlays too. ## Does this introduce a breaking change? - [ ] Yes - [x] No <!-- If this introduces a breaking change, please describe the impact and migration path for existing applications below. --> ## Other information Dev build: `7.5.1-dev.11697123035.1ee6b4a2` <!-- Any other information that is important to this PR such as screenshots of how the component looks before and after the change. -->
L
Liam DeBeasi committed
fa78676d57eb80655ee9447ffa07dcfdae0c6b2a
Parent: 1ba9973
Committed by GitHub <noreply@github.com>
on 10/12/2023, 7:29:18 PM