You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Sep 5, 2024. It is now read-only.
Repository navigation
This repository was archived by the owner on Sep 5, 2024. It is now read-only.
subheader: causes child attribute directives to be linked twice #11865
Create an md-subheader with a child div that has an attribute directive
What is the expected behavior?
The div will be transcluded once and then its attribute directives will be linked once
What is the current behavior?
It seems that the div is transcluded twice and then one of those transclusions is immediately removed from the DOM without triggering a $destroy event.
What is the use-case or motivation for changing an existing behavior?
This can cause event bindings via attribute directives to be fired tiwce.
Which versions of AngularJS, Material, OS, and browsers are affected?
Currently on 1.1.21
AngularJS: 1.7.9
AngularJS Material: 1.1.21
OS: osx
Browsers: Chrome / Safari / Firefox
Is there anything else we should know? Stack Traces, Screenshots, etc.
Strangely, the $destroy event is called when the actual transcluded element is destroyed, so this doesn't leave any orphaned event bindings if your own $destroy events are set up properly.
I'll probably dig a little be deeper into the internals of this today as this currently impacts me directly, just wanted to properly track the issue somewhere.
changed the title [-]md-subheader causes child attribute directives to be linked twice[/-][+]subheader: causes child attribute directives to be linked twice[/+]on Aug 3, 2020
Activity
codymikol commentedon Feb 26, 2020
I'll probably dig a little be deeper into the internals of this today as this currently impacts me directly, just wanted to properly track the issue somewhere.
codymikol commentedon Feb 27, 2020
It seems to make a cloned element for the "sticky" functionality.
Splaktar commentedon Apr 9, 2020
It looks like
class="md-no-sticky"as mentioned in https://material.angularjs.org/latest/api/directive/mdSubheader causes the linking to only happen once.Splaktar commentedon Apr 9, 2020
The doc also mentions:
So it seems like this is somewhat expected?
Though I'm surprised that it is doing this cloning on Chrome 80 based on https://caniuse.com/#feat=css-sticky.
[-]md-subheader causes child attribute directives to be linked twice[/-][+]subheader: causes child attribute directives to be linked twice[/+]Splaktar commentedon Sep 6, 2020
#9361 claims that we can solve the double compilation by re-designing the
$mdStickyservice, but I'm doubtful that will ever happen.