Flip the $compileProvider.preAssignBindingsEnabled flag to false by default #15350
Description
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?
A breaking change request.
What is the current behavior?
$compileProvider.preAssignBindingsEnabled
is set to true
by default. This means bindings are pre-assigned in component constructors.
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).
What is the expected behavior?
$compileProvider.preAssignBindingsEnabled
should be false
by default.
What is the motivation / use case for changing the behavior?
The true
value of the flag causes bindings to be pre-assigned in component constructors which introduces unneeded (now that we have the $onInit
lifecycle hook) complexity (we can't use regular new MyConstructor()
way of creating controllers) and doesn't work with ES6 classes.
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.
All.
Other information (e.g. stacktraces, related issues, suggestions how to fix)