@angular/core 9.1.7 → 9.1.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/bundles/core-testing.umd.js +1 -1
  2. package/bundles/core-testing.umd.min.js +1 -1
  3. package/bundles/core-testing.umd.min.js.map +1 -1
  4. package/bundles/core.umd.js +99 -106
  5. package/bundles/core.umd.js.map +1 -1
  6. package/bundles/core.umd.min.js +104 -104
  7. package/bundles/core.umd.min.js.map +1 -1
  8. package/core.d.ts +47 -43
  9. package/core.metadata.json +1 -1
  10. package/esm2015/src/reflection/reflection_capabilities.js +2 -2
  11. package/esm2015/src/render3/component.js +2 -2
  12. package/esm2015/src/render3/component_ref.js +5 -3
  13. package/esm2015/src/render3/instructions/element.js +9 -6
  14. package/esm2015/src/render3/instructions/element_container.js +2 -2
  15. package/esm2015/src/render3/instructions/lview_debug.js +14 -11
  16. package/esm2015/src/render3/instructions/shared.js +32 -63
  17. package/esm2015/src/render3/instructions/styling.js +2 -2
  18. package/esm2015/src/render3/interfaces/container.js +9 -27
  19. package/esm2015/src/render3/interfaces/node.js +34 -4
  20. package/esm2015/src/render3/interfaces/view.js +1 -1
  21. package/esm2015/src/render3/node_assert.js +1 -1
  22. package/esm2015/src/render3/node_manipulation.js +3 -3
  23. package/esm2015/src/render3/styling/static_styling.js +25 -20
  24. package/esm2015/src/render3/util/view_traversal_utils.js +28 -2
  25. package/esm2015/src/render3/util/view_utils.js +2 -17
  26. package/esm2015/src/render3/view_engine_compatibility.js +3 -7
  27. package/esm2015/src/render3/view_ref.js +1 -10
  28. package/esm2015/src/util/assert.js +1 -1
  29. package/esm2015/src/version.js +1 -1
  30. package/esm5/src/reflection/reflection_capabilities.js +2 -2
  31. package/esm5/src/render3/component.js +2 -2
  32. package/esm5/src/render3/component_ref.js +5 -3
  33. package/esm5/src/render3/instructions/element.js +9 -6
  34. package/esm5/src/render3/instructions/element_container.js +2 -2
  35. package/esm5/src/render3/instructions/lview_debug.js +8 -12
  36. package/esm5/src/render3/instructions/shared.js +30 -55
  37. package/esm5/src/render3/instructions/styling.js +2 -2
  38. package/esm5/src/render3/interfaces/container.js +10 -2
  39. package/esm5/src/render3/interfaces/node.js +1 -1
  40. package/esm5/src/render3/interfaces/view.js +1 -1
  41. package/esm5/src/render3/node_assert.js +1 -1
  42. package/esm5/src/render3/node_manipulation.js +3 -3
  43. package/esm5/src/render3/styling/static_styling.js +23 -18
  44. package/esm5/src/render3/util/view_traversal_utils.js +20 -2
  45. package/esm5/src/render3/util/view_utils.js +2 -8
  46. package/esm5/src/render3/view_engine_compatibility.js +3 -6
  47. package/esm5/src/render3/view_ref.js +1 -5
  48. package/esm5/src/util/assert.js +1 -1
  49. package/esm5/src/version.js +1 -1
  50. package/fesm2015/core.js +149 -157
  51. package/fesm2015/core.js.map +1 -1
  52. package/fesm2015/testing.js +1 -1
  53. package/fesm5/core.js +99 -106
  54. package/fesm5/core.js.map +1 -1
  55. package/fesm5/testing.js +1 -1
  56. package/package.json +1 -1
  57. package/src/r3_symbols.d.ts +1 -1
  58. package/testing/testing.d.ts +1 -1
  59. package/testing.d.ts +1 -1
package/fesm2015/core.js CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v9.1.7
2
+ * @license Angular v9.1.11
3
3
  * (c) 2010-2020 Google LLC. https://angular.io/
4
4
  * License: MIT
5
5
  */
@@ -2792,12 +2792,15 @@ const unusedValueExportToPlacateAjd = 1;
2792
2792
  */
2793
2793
  const TYPE = 1;
2794
2794
  /**
2795
- * Below are constants for LContainer indices to help us look up LContainer members
2796
- * without having to remember the specific indices.
2797
- * Uglify will inline these when minifying so there shouldn't be a cost.
2795
+ * Flag to signify that this `LContainer` may have transplanted views which need to be change
2796
+ * detected. (see: `LView[DECLARATION_COMPONENT_VIEW])`.
2797
+ *
2798
+ * This flag, once set, is never unset for the `LContainer`. This means that when unset we can skip
2799
+ * a lot of work in `refreshEmbeddedViews`. But when set we still need to verify
2800
+ * that the `MOVED_VIEWS` are transplanted and on-push.
2798
2801
  * @type {?}
2799
2802
  */
2800
- const ACTIVE_INDEX = 2;
2803
+ const HAS_TRANSPLANTED_VIEWS = 2;
2801
2804
  // PARENT, NEXT, TRANSPLANTED_VIEWS_TO_REFRESH are indices 3, 4, and 5
2802
2805
  // As we already have these constants in LView, we don't need to re-create them.
2803
2806
  // T_HOST is index 6
@@ -2816,26 +2819,6 @@ const MOVED_VIEWS = 9;
2816
2819
  * @type {?}
2817
2820
  */
2818
2821
  const CONTAINER_HEADER_OFFSET = 10;
2819
- /** @enum {number} */
2820
- const ActiveIndexFlag = {
2821
- /**
2822
- * Flag which signifies that the `LContainer` does not have any inline embedded views.
2823
- */
2824
- DYNAMIC_EMBEDDED_VIEWS_ONLY: -1,
2825
- /**
2826
- * Flag to signify that this `LContainer` may have transplanted views which need to be change
2827
- * detected. (see: `LView[DECLARATION_COMPONENT_VIEW])`.
2828
- *
2829
- * This flag once set is never unset for the `LContainer`. This means that when unset we can skip
2830
- * a lot of work in `refreshDynamicEmbeddedViews`. But when set we still need to verify
2831
- * that the `MOVED_VIEWS` are transplanted and on-push.
2832
- */
2833
- HAS_TRANSPLANTED_VIEWS: 1,
2834
- /**
2835
- * Number of bits to shift inline embedded views counter to make space for other flags.
2836
- */
2837
- SHIFT: 1,
2838
- };
2839
2822
  /**
2840
2823
  * The state associated with a container.
2841
2824
  *
@@ -2852,7 +2835,7 @@ if (false) {
2852
2835
  /* Skipping unnamed member:
2853
2836
  [TYPE]: true;*/
2854
2837
  /* Skipping unnamed member:
2855
- [ACTIVE_INDEX]: ActiveIndexFlag;*/
2838
+ [HAS_TRANSPLANTED_VIEWS]: boolean;*/
2856
2839
  /* Skipping unnamed member:
2857
2840
  [PARENT]: LView;*/
2858
2841
  /* Skipping unnamed member:
@@ -3782,21 +3765,6 @@ function getConstant(consts, index) {
3782
3765
  function resetPreOrderHookFlags(lView) {
3783
3766
  lView[PREORDER_HOOK_FLAGS] = 0;
3784
3767
  }
3785
- /**
3786
- * @param {?} lContainer
3787
- * @return {?}
3788
- */
3789
- function getLContainerActiveIndex(lContainer) {
3790
- return lContainer[ACTIVE_INDEX] >> 1 /* SHIFT */;
3791
- }
3792
- /**
3793
- * @param {?} lContainer
3794
- * @param {?} index
3795
- * @return {?}
3796
- */
3797
- function setLContainerActiveIndex(lContainer, index) {
3798
- lContainer[ACTIVE_INDEX] = index << 1 /* SHIFT */;
3799
- }
3800
3768
  /**
3801
3769
  * Updates the `TRANSPLANTED_VIEWS_TO_REFRESH` counter on the `LContainer` as well as the parents
3802
3770
  * whose
@@ -8708,14 +8676,29 @@ if (false) {
8708
8676
  */
8709
8677
  TNode.prototype.projection;
8710
8678
  /**
8711
- * A collection of all style static values for an element.
8679
+ * A collection of all `style` static values for an element (including from host).
8712
8680
  *
8713
8681
  * This field will be populated if and when:
8714
8682
  *
8715
- * - There are one or more initial styles on an element (e.g. `<div style="width:200px">`)
8683
+ * - There are one or more initial `style`s on an element (e.g. `<div style="width:200px;">`)
8684
+ * - There are one or more initial `style`s on a directive/component host
8685
+ * (e.g. `\@Directive({host: {style: "width:200px;" } }`)
8716
8686
  * @type {?}
8717
8687
  */
8718
8688
  TNode.prototype.styles;
8689
+ /**
8690
+ * A collection of all `style` static values for an element excluding host sources.
8691
+ *
8692
+ * Populated when there are one or more initial `style`s on an element
8693
+ * (e.g. `<div style="width:200px;">`)
8694
+ * Must be stored separately from `tNode.styles` to facilitate setting directive
8695
+ * inputs that shadow the `style` property. If we used `tNode.styles` as is for shadowed inputs,
8696
+ * we would feed host styles back into directives as "inputs". If we used `tNode.attrs`, we would
8697
+ * have to concatenate the attributes on every template pass. Instead, we process once on first
8698
+ * create pass and store here.
8699
+ * @type {?}
8700
+ */
8701
+ TNode.prototype.stylesWithoutHost;
8719
8702
  /**
8720
8703
  * A `KeyValueArray` version of residual `styles`.
8721
8704
  *
@@ -8746,14 +8729,29 @@ if (false) {
8746
8729
  */
8747
8730
  TNode.prototype.residualStyles;
8748
8731
  /**
8749
- * A collection of all class static values for an element.
8732
+ * A collection of all class static values for an element (including from host).
8750
8733
  *
8751
8734
  * This field will be populated if and when:
8752
8735
  *
8753
8736
  * - There are one or more initial classes on an element (e.g. `<div class="one two three">`)
8737
+ * - There are one or more initial classes on an directive/component host
8738
+ * (e.g. `\@Directive({host: {class: "SOME_CLASS" } }`)
8754
8739
  * @type {?}
8755
8740
  */
8756
8741
  TNode.prototype.classes;
8742
+ /**
8743
+ * A collection of all class static values for an element excluding host sources.
8744
+ *
8745
+ * Populated when there are one or more initial classes on an element
8746
+ * (e.g. `<div class="SOME_CLASS">`)
8747
+ * Must be stored separately from `tNode.classes` to facilitate setting directive
8748
+ * inputs that shadow the `class` property. If we used `tNode.classes` as is for shadowed inputs,
8749
+ * we would feed host classes back into directives as "inputs". If we used `tNode.attrs`, we would
8750
+ * have to concatenate the attributes on every template pass. Instead, we process once on first
8751
+ * create pass and store here.
8752
+ * @type {?}
8753
+ */
8754
+ TNode.prototype.classesWithoutHost;
8757
8755
  /**
8758
8756
  * A `KeyValueArray` version of residual `classes`.
8759
8757
  *
@@ -9650,6 +9648,32 @@ function getRootContext(viewOrComponent) {
9650
9648
  assertDefined(rootView[CONTEXT], 'RootView has no context. Perhaps it is disconnected?');
9651
9649
  return (/** @type {?} */ (rootView[CONTEXT]));
9652
9650
  }
9651
+ /**
9652
+ * Gets the first `LContainer` in the LView or `null` if none exists.
9653
+ * @param {?} lView
9654
+ * @return {?}
9655
+ */
9656
+ function getFirstLContainer(lView) {
9657
+ return getNearestLContainer(lView[CHILD_HEAD]);
9658
+ }
9659
+ /**
9660
+ * Gets the next `LContainer` that is a sibling of the given container.
9661
+ * @param {?} container
9662
+ * @return {?}
9663
+ */
9664
+ function getNextLContainer(container) {
9665
+ return getNearestLContainer(container[NEXT]);
9666
+ }
9667
+ /**
9668
+ * @param {?} viewOrContainer
9669
+ * @return {?}
9670
+ */
9671
+ function getNearestLContainer(viewOrContainer) {
9672
+ while (viewOrContainer !== null && !isLContainer(viewOrContainer)) {
9673
+ viewOrContainer = viewOrContainer[NEXT];
9674
+ }
9675
+ return viewOrContainer;
9676
+ }
9653
9677
 
9654
9678
  /**
9655
9679
  * @fileoverview added by tsickle
@@ -10587,8 +10611,10 @@ class TNode$1 {
10587
10611
  * @param {?} parent
10588
10612
  * @param {?} projection
10589
10613
  * @param {?} styles
10614
+ * @param {?} stylesWithoutHost
10590
10615
  * @param {?} residualStyles
10591
10616
  * @param {?} classes
10617
+ * @param {?} classesWithoutHost
10592
10618
  * @param {?} residualClasses
10593
10619
  * @param {?} classBindings
10594
10620
  * @param {?} styleBindings
@@ -10617,8 +10643,10 @@ class TNode$1 {
10617
10643
  parent, //
10618
10644
  projection, //
10619
10645
  styles, //
10646
+ stylesWithoutHost, //
10620
10647
  residualStyles, //
10621
10648
  classes, //
10649
+ classesWithoutHost, //
10622
10650
  residualClasses, //
10623
10651
  classBindings, //
10624
10652
  styleBindings) {
@@ -10646,8 +10674,10 @@ class TNode$1 {
10646
10674
  this.parent = parent;
10647
10675
  this.projection = projection;
10648
10676
  this.styles = styles;
10677
+ this.stylesWithoutHost = stylesWithoutHost;
10649
10678
  this.residualStyles = residualStyles;
10650
10679
  this.classes = classes;
10680
+ this.classesWithoutHost = classesWithoutHost;
10651
10681
  this.residualClasses = residualClasses;
10652
10682
  this.classBindings = classBindings;
10653
10683
  this.styleBindings = styleBindings;
@@ -10784,10 +10814,14 @@ if (false) {
10784
10814
  /** @type {?} */
10785
10815
  TNode$1.prototype.styles;
10786
10816
  /** @type {?} */
10817
+ TNode$1.prototype.stylesWithoutHost;
10818
+ /** @type {?} */
10787
10819
  TNode$1.prototype.residualStyles;
10788
10820
  /** @type {?} */
10789
10821
  TNode$1.prototype.classes;
10790
10822
  /** @type {?} */
10823
+ TNode$1.prototype.classesWithoutHost;
10824
+ /** @type {?} */
10791
10825
  TNode$1.prototype.residualClasses;
10792
10826
  /** @type {?} */
10793
10827
  TNode$1.prototype.classBindings;
@@ -11195,18 +11229,11 @@ class LContainerDebug {
11195
11229
  constructor(_raw_lContainer) {
11196
11230
  this._raw_lContainer = _raw_lContainer;
11197
11231
  }
11198
- /**
11199
- * @return {?}
11200
- */
11201
- get activeIndex() {
11202
- return getLContainerActiveIndex(this._raw_lContainer);
11203
- }
11204
11232
  /**
11205
11233
  * @return {?}
11206
11234
  */
11207
11235
  get hasTransplantedViews() {
11208
- return (this._raw_lContainer[ACTIVE_INDEX] & 1 /* HAS_TRANSPLANTED_VIEWS */) ===
11209
- 1 /* HAS_TRANSPLANTED_VIEWS */;
11236
+ return this._raw_lContainer[HAS_TRANSPLANTED_VIEWS];
11210
11237
  }
11211
11238
  /**
11212
11239
  * @return {?}
@@ -11832,7 +11859,7 @@ function assignTViewNodeToLView(tView, tParentNode, index, lView) {
11832
11859
  tView.node = tNode = (/** @type {?} */ (createTNode(tView, (/** @type {?} */ (tParentNode)), //
11833
11860
  2 /* View */, index, null, null)));
11834
11861
  }
11835
- return lView[T_HOST] = (/** @type {?} */ (tNode));
11862
+ lView[T_HOST] = (/** @type {?} */ (tNode));
11836
11863
  }
11837
11864
  /**
11838
11865
  * When elements are created dynamically after a view blueprint is created (e.g. through
@@ -11992,7 +12019,7 @@ function refreshView(tView, lView, templateFn, context) {
11992
12019
  // insertion points. This is needed to avoid the situation where the template is defined in this
11993
12020
  // `LView` but its declaration appears after the insertion component.
11994
12021
  markTransplantedViewsForRefresh(lView);
11995
- refreshDynamicEmbeddedViews(lView);
12022
+ refreshEmbeddedViews(lView);
11996
12023
  // Content query results must be refreshed before content hooks are called.
11997
12024
  if (tView.contentQueries !== null) {
11998
12025
  refreshContentQueries(tView, lView);
@@ -12446,8 +12473,10 @@ function createTNode(tView, tParent, type, adjustedIndex, tagName, attrs) {
12446
12473
  tParent, // parent: TElementNode|TContainerNode|null
12447
12474
  null, // projection: number|(ITNode|RNode[])[]|null
12448
12475
  null, // styles: string|null
12476
+ null, // stylesWithoutHost: string|null
12449
12477
  undefined, // residualStyles: string|null
12450
12478
  null, // classes: string|null
12479
+ null, // classesWithoutHost: string|null
12451
12480
  undefined, (/** @type {?} */ (0)), (/** @type {?} */ (0))) :
12452
12481
  {
12453
12482
  type: type,
@@ -12473,8 +12502,10 @@ function createTNode(tView, tParent, type, adjustedIndex, tagName, attrs) {
12473
12502
  parent: tParent,
12474
12503
  projection: null,
12475
12504
  styles: null,
12505
+ stylesWithoutHost: null,
12476
12506
  residualStyles: undefined,
12477
12507
  classes: null,
12508
+ classesWithoutHost: null,
12478
12509
  residualClasses: undefined,
12479
12510
  classBindings: (/** @type {?} */ (0)),
12480
12511
  styleBindings: (/** @type {?} */ (0)),
@@ -13329,7 +13360,7 @@ function createLContainer(hostNative, currentView, native, tNode) {
13329
13360
  /** @type {?} */
13330
13361
  const lContainer = new (ngDevMode ? LContainerArray : Array)(hostNative, // host native
13331
13362
  true, // Boolean `true` in this position signifies that this is an `LContainer`
13332
- -1 /* DYNAMIC_EMBEDDED_VIEWS_ONLY */ << 1 /* SHIFT */, // active index
13363
+ false, // has transplanted views
13333
13364
  currentView, // parent
13334
13365
  null, // next
13335
13366
  0, // transplanted views to refresh count
@@ -13343,12 +13374,12 @@ function createLContainer(hostNative, currentView, native, tNode) {
13343
13374
  return lContainer;
13344
13375
  }
13345
13376
  /**
13346
- * Goes over dynamic embedded views (ones created through ViewContainerRef APIs) and refreshes
13377
+ * Goes over embedded views (ones created through ViewContainerRef APIs) and refreshes
13347
13378
  * them by executing an associated template function.
13348
13379
  * @param {?} lView
13349
13380
  * @return {?}
13350
13381
  */
13351
- function refreshDynamicEmbeddedViews(lView) {
13382
+ function refreshEmbeddedViews(lView) {
13352
13383
  for (let lContainer = getFirstLContainer(lView); lContainer !== null; lContainer = getNextLContainer(lContainer)) {
13353
13384
  for (let i = CONTAINER_HEADER_OFFSET; i < lContainer.length; i++) {
13354
13385
  /** @type {?} */
@@ -13362,70 +13393,35 @@ function refreshDynamicEmbeddedViews(lView) {
13362
13393
  }
13363
13394
  }
13364
13395
  }
13365
- /**
13366
- * Gets the first `LContainer` in the LView or `null` if none exists.
13367
- * @param {?} lView
13368
- * @return {?}
13369
- */
13370
- function getFirstLContainer(lView) {
13371
- /** @type {?} */
13372
- let viewOrContainer = lView[CHILD_HEAD];
13373
- while (viewOrContainer !== null &&
13374
- !(isLContainer(viewOrContainer) &&
13375
- viewOrContainer[ACTIVE_INDEX] >> 1 /* SHIFT */ ===
13376
- -1 /* DYNAMIC_EMBEDDED_VIEWS_ONLY */)) {
13377
- viewOrContainer = viewOrContainer[NEXT];
13378
- }
13379
- return viewOrContainer;
13380
- }
13381
- /**
13382
- * Gets the next `LContainer` that is a sibling of the given container.
13383
- * @param {?} container
13384
- * @return {?}
13385
- */
13386
- function getNextLContainer(container) {
13387
- /** @type {?} */
13388
- let viewOrContainer = container[NEXT];
13389
- while (viewOrContainer !== null &&
13390
- !(isLContainer(viewOrContainer) &&
13391
- viewOrContainer[ACTIVE_INDEX] >> 1 /* SHIFT */ ===
13392
- -1 /* DYNAMIC_EMBEDDED_VIEWS_ONLY */)) {
13393
- viewOrContainer = viewOrContainer[NEXT];
13394
- }
13395
- return viewOrContainer;
13396
- }
13397
13396
  /**
13398
13397
  * Mark transplanted views as needing to be refreshed at their insertion points.
13399
13398
  *
13400
- * See: `ActiveIndexFlag.HAS_TRANSPLANTED_VIEWS` and `LView[DECLARATION_COMPONENT_VIEW]` for
13401
- * explanation of transplanted views.
13402
- *
13403
13399
  * @param {?} lView The `LView` that may have transplanted views.
13404
13400
  * @return {?}
13405
13401
  */
13406
13402
  function markTransplantedViewsForRefresh(lView) {
13407
13403
  for (let lContainer = getFirstLContainer(lView); lContainer !== null; lContainer = getNextLContainer(lContainer)) {
13408
- if ((lContainer[ACTIVE_INDEX] & 1 /* HAS_TRANSPLANTED_VIEWS */) !== 0) {
13404
+ if (!lContainer[HAS_TRANSPLANTED_VIEWS])
13405
+ continue;
13406
+ /** @type {?} */
13407
+ const movedViews = (/** @type {?} */ (lContainer[MOVED_VIEWS]));
13408
+ ngDevMode && assertDefined(movedViews, 'Transplanted View flags set but missing MOVED_VIEWS');
13409
+ for (let i = 0; i < movedViews.length; i++) {
13409
13410
  /** @type {?} */
13410
- const movedViews = (/** @type {?} */ (lContainer[MOVED_VIEWS]));
13411
- ngDevMode && assertDefined(movedViews, 'Transplanted View flags set but missing MOVED_VIEWS');
13412
- for (let i = 0; i < movedViews.length; i++) {
13413
- /** @type {?} */
13414
- const movedLView = (/** @type {?} */ (movedViews[i]));
13415
- /** @type {?} */
13416
- const insertionLContainer = (/** @type {?} */ (movedLView[PARENT]));
13417
- ngDevMode && assertLContainer(insertionLContainer);
13418
- // We don't want to increment the counter if the moved LView was already marked for
13419
- // refresh.
13420
- if ((movedLView[FLAGS] & 1024 /* RefreshTransplantedView */) === 0) {
13421
- updateTransplantedViewCount(insertionLContainer, 1);
13422
- }
13423
- // Note, it is possible that the `movedViews` is tracking views that are transplanted *and*
13424
- // those that aren't (declaration component === insertion component). In the latter case,
13425
- // it's fine to add the flag, as we will clear it immediately in
13426
- // `refreshDynamicEmbeddedViews` for the view currently being refreshed.
13427
- movedLView[FLAGS] |= 1024 /* RefreshTransplantedView */;
13411
+ const movedLView = (/** @type {?} */ (movedViews[i]));
13412
+ /** @type {?} */
13413
+ const insertionLContainer = (/** @type {?} */ (movedLView[PARENT]));
13414
+ ngDevMode && assertLContainer(insertionLContainer);
13415
+ // We don't want to increment the counter if the moved LView was already marked for
13416
+ // refresh.
13417
+ if ((movedLView[FLAGS] & 1024 /* RefreshTransplantedView */) === 0) {
13418
+ updateTransplantedViewCount(insertionLContainer, 1);
13428
13419
  }
13420
+ // Note, it is possible that the `movedViews` is tracking views that are transplanted *and*
13421
+ // those that aren't (declaration component === insertion component). In the latter case,
13422
+ // it's fine to add the flag, as we will clear it immediately in
13423
+ // `refreshEmbeddedViews` for the view currently being refreshed.
13424
+ movedLView[FLAGS] |= 1024 /* RefreshTransplantedView */;
13429
13425
  }
13430
13426
  }
13431
13427
  }
@@ -14154,7 +14150,7 @@ function trackMovedView(declarationContainer, lView) {
14154
14150
  // At this point the declaration-component is not same as insertion-component; this means that
14155
14151
  // this is a transplanted view. Mark the declared lView as having transplanted views so that
14156
14152
  // those views can participate in CD.
14157
- declarationContainer[ACTIVE_INDEX] |= 1 /* HAS_TRANSPLANTED_VIEWS */;
14153
+ declarationContainer[HAS_TRANSPLANTED_VIEWS] = true;
14158
14154
  }
14159
14155
  if (movedViews === null) {
14160
14156
  declarationContainer[MOVED_VIEWS] = [lView];
@@ -15080,10 +15076,6 @@ class ViewRef {
15080
15076
  this._cdRefInjectingView = _cdRefInjectingView;
15081
15077
  this._appRef = null;
15082
15078
  this._viewContainerRef = null;
15083
- /**
15084
- * \@internal
15085
- */
15086
- this._tViewNode = null;
15087
15079
  }
15088
15080
  /**
15089
15081
  * @return {?}
@@ -15361,11 +15353,6 @@ if (false) {
15361
15353
  * @private
15362
15354
  */
15363
15355
  ViewRef.prototype._viewContainerRef;
15364
- /**
15365
- * \@internal
15366
- * @type {?}
15367
- */
15368
- ViewRef.prototype._tViewNode;
15369
15356
  /**
15370
15357
  * This represents `LView` associated with the component when ViewRef is a ChangeDetectorRef.
15371
15358
  *
@@ -15574,10 +15561,7 @@ function createTemplateRef(TemplateRefToken, ElementRefToken, hostTNode, hostVie
15574
15561
  embeddedLView[QUERIES] = declarationViewLQueries.createEmbeddedView(embeddedTView);
15575
15562
  }
15576
15563
  renderView(embeddedTView, embeddedLView, context);
15577
- /** @type {?} */
15578
- const viewRef = new ViewRef(embeddedLView);
15579
- viewRef._tViewNode = (/** @type {?} */ (embeddedLView[T_HOST]));
15580
- return viewRef;
15564
+ return new ViewRef(embeddedLView);
15581
15565
  }
15582
15566
  };
15583
15567
  }
@@ -15844,7 +15828,6 @@ function createContainerRef(ViewContainerRefToken, ElementRefToken, hostTNode, h
15844
15828
  if (isLContainer(slotValue)) {
15845
15829
  // If the host is a container, we don't need to create a new LContainer
15846
15830
  lContainer = slotValue;
15847
- setLContainerActiveIndex(lContainer, -1 /* DYNAMIC_EMBEDDED_VIEWS_ONLY */);
15848
15831
  }
15849
15832
  else {
15850
15833
  /** @type {?} */
@@ -16126,7 +16109,7 @@ function isType(v) {
16126
16109
  const DELEGATE_CTOR = /^function\s+\S+\(\)\s*{[\s\S]+\.apply\(this,\s*arguments\)/;
16127
16110
  const INHERITED_CLASS = /^class\s+[A-Za-z\d$_]*\s*extends\s+[^{]+{/;
16128
16111
  const INHERITED_CLASS_WITH_CTOR = /^class\s+[A-Za-z\d$_]*\s*extends\s+[^{]+{[\s\S]*constructor\s*\(/;
16129
- const INHERITED_CLASS_WITH_DELEGATE_CTOR = /^class\s+[A-Za-z\d$_]*\s*extends\s+[^{]+{[\s\S]*constructor\s*\(\)\s*{\s+super\(\.\.\.arguments\)/;
16112
+ const INHERITED_CLASS_WITH_DELEGATE_CTOR = /^class\s+[A-Za-z\d$_]*\s*extends\s+[^{]+{[\s\S]*constructor\s*\(\)\s*{\s*super\(\.\.\.arguments\)/;
16130
16113
  /**
16131
16114
  * Determine whether a stringified type is a class which delegates its constructor
16132
16115
  * to its parent.
@@ -19791,36 +19774,41 @@ function componentDefResolved(type) {
19791
19774
  *
19792
19775
  * @param {?} tNode The `TNode` into which the styling information should be loaded.
19793
19776
  * @param {?} attrs `TAttributes` containing the styling information.
19777
+ * @param {?} writeToHost Where should the resulting static styles be written?
19778
+ * - `false` Write to `TNode.stylesWithoutHost` / `TNode.classesWithoutHost`
19779
+ * - `true` Write to `TNode.styles` / `TNode.classes`
19794
19780
  * @return {?}
19795
19781
  */
19796
- function computeStaticStyling(tNode, attrs) {
19782
+ function computeStaticStyling(tNode, attrs, writeToHost) {
19797
19783
  ngDevMode &&
19798
19784
  assertFirstCreatePass(getTView(), 'Expecting to be called in first template pass only');
19799
19785
  /** @type {?} */
19800
- let styles = tNode.styles;
19786
+ let styles = writeToHost ? tNode.styles : null;
19801
19787
  /** @type {?} */
19802
- let classes = tNode.classes;
19788
+ let classes = writeToHost ? tNode.classes : null;
19803
19789
  /** @type {?} */
19804
19790
  let mode = 0;
19805
- for (let i = 0; i < attrs.length; i++) {
19806
- /** @type {?} */
19807
- const value = attrs[i];
19808
- if (typeof value === 'number') {
19809
- mode = value;
19810
- }
19811
- else if (mode == 1 /* Classes */) {
19812
- classes = concatStringsWithSpace(classes, (/** @type {?} */ (value)));
19813
- }
19814
- else if (mode == 2 /* Styles */) {
19815
- /** @type {?} */
19816
- const style = (/** @type {?} */ (value));
19791
+ if (attrs !== null) {
19792
+ for (let i = 0; i < attrs.length; i++) {
19817
19793
  /** @type {?} */
19818
- const styleValue = (/** @type {?} */ (attrs[++i]));
19819
- styles = concatStringsWithSpace(styles, style + ': ' + styleValue + ';');
19794
+ const value = attrs[i];
19795
+ if (typeof value === 'number') {
19796
+ mode = value;
19797
+ }
19798
+ else if (mode == 1 /* Classes */) {
19799
+ classes = concatStringsWithSpace(classes, (/** @type {?} */ (value)));
19800
+ }
19801
+ else if (mode == 2 /* Styles */) {
19802
+ /** @type {?} */
19803
+ const style = (/** @type {?} */ (value));
19804
+ /** @type {?} */
19805
+ const styleValue = (/** @type {?} */ (attrs[++i]));
19806
+ styles = concatStringsWithSpace(styles, style + ': ' + styleValue + ';');
19807
+ }
19820
19808
  }
19821
19809
  }
19822
- styles !== null && (tNode.styles = styles);
19823
- classes !== null && (tNode.classes = classes);
19810
+ writeToHost ? tNode.styles = styles : tNode.stylesWithoutHost = styles;
19811
+ writeToHost ? tNode.classes = classes : tNode.classesWithoutHost = classes;
19824
19812
  }
19825
19813
 
19826
19814
  /**
@@ -21228,8 +21216,11 @@ function elementStartFirstCreatePass(index, tView, lView, native, name, attrsInd
21228
21216
  /** @type {?} */
21229
21217
  const hasDirectives = resolveDirectives(tView, lView, tNode, getConstant(tViewConsts, localRefsIndex));
21230
21218
  ngDevMode && warnAboutUnknownElement(tView, lView, native, tNode, hasDirectives);
21219
+ if (tNode.attrs !== null) {
21220
+ computeStaticStyling(tNode, tNode.attrs, false);
21221
+ }
21231
21222
  if (tNode.mergedAttrs !== null) {
21232
- computeStaticStyling(tNode, tNode.mergedAttrs);
21223
+ computeStaticStyling(tNode, tNode.mergedAttrs, true);
21233
21224
  }
21234
21225
  if (tView.queries !== null) {
21235
21226
  tView.queries.elementStart(tView, tNode);
@@ -21332,11 +21323,11 @@ function ɵɵelementEnd() {
21332
21323
  (/** @type {?} */ (tView.queries)).elementEnd(previousOrParentTNode);
21333
21324
  }
21334
21325
  }
21335
- if (tNode.classes !== null && hasClassInput(tNode)) {
21336
- setDirectiveInputsWhichShadowsStyling(tView, tNode, getLView(), tNode.classes, true);
21326
+ if (tNode.classesWithoutHost != null && hasClassInput(tNode)) {
21327
+ setDirectiveInputsWhichShadowsStyling(tView, tNode, getLView(), tNode.classesWithoutHost, true);
21337
21328
  }
21338
- if (tNode.styles !== null && hasStyleInput(tNode)) {
21339
- setDirectiveInputsWhichShadowsStyling(tView, tNode, getLView(), tNode.styles, false);
21329
+ if (tNode.stylesWithoutHost != null && hasStyleInput(tNode)) {
21330
+ setDirectiveInputsWhichShadowsStyling(tView, tNode, getLView(), tNode.stylesWithoutHost, false);
21340
21331
  }
21341
21332
  }
21342
21333
  /**
@@ -21426,7 +21417,7 @@ function elementContainerStartFirstCreatePass(index, tView, lView, attrsIndex, l
21426
21417
  // While ng-container doesn't necessarily support styling, we use the style context to identify
21427
21418
  // and execute directives on the ng-container.
21428
21419
  if (attrs !== null) {
21429
- computeStaticStyling(tNode, attrs);
21420
+ computeStaticStyling(tNode, attrs, true);
21430
21421
  }
21431
21422
  /** @type {?} */
21432
21423
  const localRefs = getConstant(tViewConsts, localRefsIndex);
@@ -23539,7 +23530,7 @@ function checkStylingMap(keyValueArraySet, stringParser, value, isClassBased) {
23539
23530
  // thing as it would think that the static portion was removed. For this reason we
23540
23531
  // concatenate it so that `[ngStyle]`/`[ngClass]` can continue to work on changed.
23541
23532
  /** @type {?} */
23542
- let staticPrefix = isClassBased ? tNode.classes : tNode.styles;
23533
+ let staticPrefix = isClassBased ? tNode.classesWithoutHost : tNode.stylesWithoutHost;
23543
23534
  ngDevMode && isClassBased === false && staticPrefix !== null &&
23544
23535
  assertEqual(staticPrefix.endsWith(';'), true, 'Expecting static portion to end with \';\'');
23545
23536
  if (staticPrefix !== null) {
@@ -26441,7 +26432,7 @@ function createRootComponentView(rNode, def, rootView, rendererFactory, hostRend
26441
26432
  /** @type {?} */
26442
26433
  const mergedAttrs = tNode.mergedAttrs = def.hostAttrs;
26443
26434
  if (mergedAttrs !== null) {
26444
- computeStaticStyling(tNode, mergedAttrs);
26435
+ computeStaticStyling(tNode, mergedAttrs, true);
26445
26436
  if (rNode !== null) {
26446
26437
  setUpAttributes(hostRenderer, rNode, mergedAttrs);
26447
26438
  if (tNode.classes !== null) {
@@ -28178,7 +28169,7 @@ if (false) {
28178
28169
  * \@publicApi
28179
28170
  * @type {?}
28180
28171
  */
28181
- const VERSION = new Version('9.1.7');
28172
+ const VERSION = new Version('9.1.11');
28182
28173
 
28183
28174
  /**
28184
28175
  * @fileoverview added by tsickle
@@ -34114,7 +34105,8 @@ class ComponentFactory$1 extends ComponentFactory {
34114
34105
  if (!rootSelectorOrNode || isIsolated) {
34115
34106
  // The host element of the internal or isolated root view is attached to the component's host
34116
34107
  // view node.
34117
- (/** @type {?} */ (componentRef.hostView._tViewNode)).child = tElementNode;
34108
+ ngDevMode && assertNodeOfPossibleTypes(rootTView.node, 2 /* View */);
34109
+ (/** @type {?} */ (rootTView.node)).child = tElementNode;
34118
34110
  }
34119
34111
  return componentRef;
34120
34112
  }
@@ -34176,7 +34168,7 @@ class ComponentRef$1 extends ComponentRef {
34176
34168
  this.destroyCbs = [];
34177
34169
  this.instance = instance;
34178
34170
  this.hostView = this.changeDetectorRef = new RootViewRef(_rootLView);
34179
- this.hostView._tViewNode = assignTViewNodeToLView(_rootLView[TVIEW], null, -1, _rootLView);
34171
+ assignTViewNodeToLView(_rootLView[TVIEW], null, -1, _rootLView);
34180
34172
  this.componentType = componentType;
34181
34173
  }
34182
34174
  /**