angular-cn/modules/@angular/upgrade
George Kalpakas 07122f0ad9 fix(upgrade): populate upgraded component's view before creating the controller (#14289)
Previously, the relative order of the AngularJS compiling/linking operations was
not similar to AngularJS's, resulting in inconsistent behavior for upgraded
components (which made upgrading to Angular less straight forward).

This commit fixes it, by following the compiling/linking process of AngularJS
more closely.

Main differences:

- The components view is already populated when the controller is instantiated
  (and subsequent hooks are called).
- The correct DOM content is available when running the `$onChanges`, `$onInit`,
  `$doCheck` hooks. Previously, the "content children" were still present, not
  the "view children".
- The same for pre-linking.
- The template is compiled in the correct DOM context (e.g. has access to
  ancestors). Previously, it was compiled in isolation, inside a dummy element.

For reference, here is the order of operations:

**Before**

1. Compile template
2. Instantiate controller
3. Hook: $onChanges
4. Hook: $onInit
5. Hook: $doCheck
6. Pre-linking
7. Collect content children
8. Insert compiled template
9. Linking
10. Post-linking
11. Hook: $postLink

**After**

1. Collect content children
2. Insert template
3. Compile template
4. Instantiate controller
5. Hook: $onChanges
6. Hook: $onInit
7. Hook: $doCheck
8. Pre-linking
9. Linking
10. Post-linking
11. Hook: $postLink

Fixes #13912
2017-03-07 09:32:52 -08:00
..
src fix(upgrade): populate upgraded component's view before creating the controller (#14289) 2017-03-07 09:32:52 -08:00
test fix(upgrade): populate upgraded component's view before creating the controller (#14289) 2017-03-07 09:32:52 -08:00
.babelrc perf: distrubute smaller bundled code and include es2015 bundle 2017-02-21 20:48:55 -08:00
.babelrc-static perf: distrubute smaller bundled code and include es2015 bundle 2017-02-21 20:48:55 -08:00
index.ts perf: distrubute smaller bundled code and include es2015 bundle 2017-02-21 20:48:55 -08:00
package.json perf: distrubute smaller bundled code and include es2015 bundle 2017-02-21 20:48:55 -08:00
public_api.ts perf: distrubute smaller bundled code and include es2015 bundle 2017-02-21 20:48:55 -08:00
public_api_static.ts build: produce metadata bundles for @angular modules (#14509) 2017-02-16 08:15:30 -08:00
static.ts perf: distrubute smaller bundled code and include es2015 bundle 2017-02-21 20:48:55 -08:00
tsconfig-build.json fix(tsc-wrapped): use agreed on options names (#14630) 2017-02-22 10:57:01 -08:00
tsconfig-static.json build: resolve review comments on flat modules PR and fix more bugs (#14660) 2017-02-23 16:39:44 -08:00