Skip to content
This repository was archived by the owner on Apr 12, 2024. It is now read-only.

Input with ng-model as default transclude keeps validators alive #14765

Closed
eyalhakim opened this issue Jun 13, 2016 · 4 comments
Closed

Input with ng-model as default transclude keeps validators alive #14765

eyalhakim opened this issue Jun 13, 2016 · 4 comments

Comments

@eyalhakim
Copy link

Note: for support questions, please use one of these channels: https://github.com/angular/angular.js/blob/master/CONTRIBUTING.md#question. This repository's issues are reserved for feature requests and bug reports.

Do you want to request a feature or report a bug?
Report a bug

What is the current behavior?
When using multi slot transclusion, if an input element with ng-model is being used as the default\fallback, when replace with trascluded content, validators from the default input are still present and are preventing the form from being valid.

If the current behavior is a bug, please provide the steps to reproduce and if possible a minimal demo of the problem via https://plnkr.co or similar (template: http://plnkr.co/edit/tpl:yBpEi4).
I think it is explained well above.

What is the expected behavior?
The validators should be destroyed in the $destroy function of the NgModelController

What is the motivation / use case for changing the behavior?
Explained aboe

Which versions of Angular, and which browser / OS are affected by this issue? Did this work in previous versions of Angular? Please also test with the latest stable and snapshot (https://code.angularjs.org/snapshot/) versions.
angular 1.5.6
chrome 51.0.2704.84
Mac osx El Capitan
I just started using the multi slot transclusion and since it is new, i don't believe this ever worked before.

Other information (e.g. stacktraces, related issues, suggestions how to fix)
for now i used ng-if on the default input as a workaround and checked for transcluded slot existance.

@Narretz
Copy link
Contributor

Narretz commented Jun 13, 2016

Can you please post a demo in a plnkr or similar?

@eyalhakim
Copy link
Author

Can you please send me an angular-ready environment in plnkr or similar?
I will complete the rest.

@Narretz
Copy link
Contributor

Narretz commented Jun 13, 2016

@eyalhakim
Copy link
Author

There you go:
http://plnkr.co/edit/RlFUZDrEMwde2Zv4PFrw?p=preview

Thanks!

dcherman added a commit to dcherman/angular.js that referenced this issue Jun 14, 2016
If the transclude function did not return content, then the transcluded
scope that was created needs to be cleaned up in order to avoid a slight
amount of unnecessary overhead since the additional scope is no longer
needed.

If the transcluded content did return content, the the fallback content
should never have been linked in the first place as it was intended to be
immediately removed.

Fixes angular#14768
Fixes angular#14765
dcherman added a commit to dcherman/angular.js that referenced this issue Jun 14, 2016
If the transclude function did not return content, then the transcluded
scope that was created needs to be cleaned up in order to avoid a slight
amount of unnecessary overhead since the additional scope is no longer
needed.

If the transcluded content did return content, the the fallback content
should never have been linked in the first place as it was intended to be
immediately removed.

Fixes angular#14768
Fixes angular#14765
petebacondarwin pushed a commit that referenced this issue Jun 17, 2016
If the instance of the directive does provide transcluded content, then the fallback
content should not be compiled and linked as it will never be used.

If the instance of the directive does not provide transcluded content, then the
transcluded scope that was created for this non-existent content is never used,
so it should be destroy in order to clean up unwanted memory use and digests.

Fixes #14768
Fixes #14765
Closes #14775
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Projects
None yet
Development

No branches or pull requests

2 participants