-
Notifications
You must be signed in to change notification settings - Fork 13.5k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
bug: virtual prop mode does not account if assigned dynamically for all components #29167
Comments
Thank you for the issue. I can reproduce this, but need to dig into why exactly it's happening. If the issue is indeed with the change detection, we'll need to figure out the best path forward to resolving that. |
Hello @DwieDima this behavior is working as intended in Ionic Framework. Virtual properties do not behave the same as our With Angular we have an additional limitation that the property value is not set immediately when the element is inserted into the DOM with the binding syntax ( Supporting reactive properties is something the team has discussed in the past, but has a lot of edge cases where reactive config options can cause issues in a users application. As a result we decided against supporting it. Do you have a use case from an application where a dynamic mode is required that we could explore further? In the past when faced with this type of behavior, I would render different instances of an element with the mode set statically to achieve the behavior around the limitations that Ionic Framework + Angular have. |
Hi @sean-perkins, thanks a lot for the detailed explanation about how virtual properties work in Ionic. I appreciate the suggestion to display components statically based on conditions to address the issues with reactive properties. This approach has resolved the problem. I wasn't aware that virtual properties cannot handle dynamic values. Is this documented anywhere in Ionic's official documentation? |
Thank you for raising this issue! I've created an issue to have it added to the official Ionic documentation: ionic-team/ionic-docs#3814. I'll be closing this issue, but feel free to add any feedback to the linked issue if you think there's anything missing from the documentation that would be helpful to include. 🙂 |
Thanks for the issue! This issue is being locked to prevent comments that are not relevant to the original issue. If this is still an issue with the latest version of Ionic, please create a new issue and ensure the template is fully filled out. |
Prerequisites
Ionic Framework Version
v7.x
Current Behavior
If a global mode is defined using
Mode on component level won't assign the defined mode, instead global mode is used.
But if you use the mode value directly like
it works, even if global mode is set to
ios
.Bildschirmaufnahme.2024-03-15.um.14.29.22.mov
In this example both tabs have assigned mode="md". Some of them directly (fixed mode), some with value binding (dynamic mode).
As you can see here only the first initialized tab is working as expected with both fixed and dynamic mode as md.
If you now switch the tab, the md mode is gone and ios mode is visible.
Expected Behavior
mode on component level should also work with value binding, even if global mode is set to
ios
Steps to Reproduce
Code Reproduction URL
https://stackblitz.com/edit/angular-od4spf?file=src%2Fapp%2Fhome%2Fhome-page.component.html
Ionic Info
9.x
Additional Information
I think this bug only occurs in angular where the mode is defined in proxies.ts, since all components use
changeDetection: ChangeDetectionStrategy.OnPush
.Since global mode is set using
IonicModule.forRoot({ mode: 'ios' })
, reassigning mode on component level doesn't triggerchangeDetectionRef.detectChanges()
, so the components keep the global defined mode.related: #29137
The text was updated successfully, but these errors were encountered: