@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
@@ -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
  */
@@ -2126,7 +2126,15 @@
2126
2126
  * without having to remember the specific indices.
2127
2127
  * Uglify will inline these when minifying so there shouldn't be a cost.
2128
2128
  */
2129
- var ACTIVE_INDEX = 2;
2129
+ /**
2130
+ * Flag to signify that this `LContainer` may have transplanted views which need to be change
2131
+ * detected. (see: `LView[DECLARATION_COMPONENT_VIEW])`.
2132
+ *
2133
+ * This flag, once set, is never unset for the `LContainer`. This means that when unset we can skip
2134
+ * a lot of work in `refreshEmbeddedViews`. But when set we still need to verify
2135
+ * that the `MOVED_VIEWS` are transplanted and on-push.
2136
+ */
2137
+ var HAS_TRANSPLANTED_VIEWS = 2;
2130
2138
  // PARENT, NEXT, TRANSPLANTED_VIEWS_TO_REFRESH are indices 3, 4, and 5
2131
2139
  // As we already have these constants in LView, we don't need to re-create them.
2132
2140
  // T_HOST is index 6
@@ -2511,12 +2519,6 @@
2511
2519
  function resetPreOrderHookFlags(lView) {
2512
2520
  lView[PREORDER_HOOK_FLAGS] = 0;
2513
2521
  }
2514
- function getLContainerActiveIndex(lContainer) {
2515
- return lContainer[ACTIVE_INDEX] >> 1 /* SHIFT */;
2516
- }
2517
- function setLContainerActiveIndex(lContainer, index) {
2518
- lContainer[ACTIVE_INDEX] = index << 1 /* SHIFT */;
2519
- }
2520
2522
  /**
2521
2523
  * Updates the `TRANSPLANTED_VIEWS_TO_REFRESH` counter on the `LContainer` as well as the parents
2522
2524
  * whose
@@ -6413,6 +6415,24 @@
6413
6415
  assertDefined(rootView[CONTEXT], 'RootView has no context. Perhaps it is disconnected?');
6414
6416
  return rootView[CONTEXT];
6415
6417
  }
6418
+ /**
6419
+ * Gets the first `LContainer` in the LView or `null` if none exists.
6420
+ */
6421
+ function getFirstLContainer(lView) {
6422
+ return getNearestLContainer(lView[CHILD_HEAD]);
6423
+ }
6424
+ /**
6425
+ * Gets the next `LContainer` that is a sibling of the given container.
6426
+ */
6427
+ function getNextLContainer(container) {
6428
+ return getNearestLContainer(container[NEXT]);
6429
+ }
6430
+ function getNearestLContainer(viewOrContainer) {
6431
+ while (viewOrContainer !== null && !isLContainer(viewOrContainer)) {
6432
+ viewOrContainer = viewOrContainer[NEXT];
6433
+ }
6434
+ return viewOrContainer;
6435
+ }
6416
6436
 
6417
6437
  /**
6418
6438
  * @license
@@ -6766,8 +6786,10 @@
6766
6786
  parent, //
6767
6787
  projection, //
6768
6788
  styles, //
6789
+ stylesWithoutHost, //
6769
6790
  residualStyles, //
6770
6791
  classes, //
6792
+ classesWithoutHost, //
6771
6793
  residualClasses, //
6772
6794
  classBindings, //
6773
6795
  styleBindings) {
@@ -6795,8 +6817,10 @@
6795
6817
  this.parent = parent;
6796
6818
  this.projection = projection;
6797
6819
  this.styles = styles;
6820
+ this.stylesWithoutHost = stylesWithoutHost;
6798
6821
  this.residualStyles = residualStyles;
6799
6822
  this.classes = classes;
6823
+ this.classesWithoutHost = classesWithoutHost;
6800
6824
  this.residualClasses = residualClasses;
6801
6825
  this.classBindings = classBindings;
6802
6826
  this.styleBindings = styleBindings;
@@ -7190,17 +7214,9 @@
7190
7214
  function LContainerDebug(_raw_lContainer) {
7191
7215
  this._raw_lContainer = _raw_lContainer;
7192
7216
  }
7193
- Object.defineProperty(LContainerDebug.prototype, "activeIndex", {
7194
- get: function () {
7195
- return getLContainerActiveIndex(this._raw_lContainer);
7196
- },
7197
- enumerable: true,
7198
- configurable: true
7199
- });
7200
7217
  Object.defineProperty(LContainerDebug.prototype, "hasTransplantedViews", {
7201
7218
  get: function () {
7202
- return (this._raw_lContainer[ACTIVE_INDEX] & 1 /* HAS_TRANSPLANTED_VIEWS */) ===
7203
- 1 /* HAS_TRANSPLANTED_VIEWS */;
7219
+ return this._raw_lContainer[HAS_TRANSPLANTED_VIEWS];
7204
7220
  },
7205
7221
  enumerable: true,
7206
7222
  configurable: true
@@ -7656,7 +7672,7 @@
7656
7672
  tView.node = tNode = createTNode(tView, tParentNode, //
7657
7673
  2 /* View */, index, null, null);
7658
7674
  }
7659
- return lView[T_HOST] = tNode;
7675
+ lView[T_HOST] = tNode;
7660
7676
  }
7661
7677
  /**
7662
7678
  * When elements are created dynamically after a view blueprint is created (e.g. through
@@ -7796,7 +7812,7 @@
7796
7812
  // insertion points. This is needed to avoid the situation where the template is defined in this
7797
7813
  // `LView` but its declaration appears after the insertion component.
7798
7814
  markTransplantedViewsForRefresh(lView);
7799
- refreshDynamicEmbeddedViews(lView);
7815
+ refreshEmbeddedViews(lView);
7800
7816
  // Content query results must be refreshed before content hooks are called.
7801
7817
  if (tView.contentQueries !== null) {
7802
7818
  refreshContentQueries(tView, lView);
@@ -8167,8 +8183,10 @@
8167
8183
  tParent, // parent: TElementNode|TContainerNode|null
8168
8184
  null, // projection: number|(ITNode|RNode[])[]|null
8169
8185
  null, // styles: string|null
8186
+ null, // stylesWithoutHost: string|null
8170
8187
  undefined, // residualStyles: string|null
8171
8188
  null, // classes: string|null
8189
+ null, // classesWithoutHost: string|null
8172
8190
  undefined, // residualClasses: string|null
8173
8191
  0, // classBindings: TStylingRange;
8174
8192
  0) :
@@ -8196,8 +8214,10 @@
8196
8214
  parent: tParent,
8197
8215
  projection: null,
8198
8216
  styles: null,
8217
+ stylesWithoutHost: null,
8199
8218
  residualStyles: undefined,
8200
8219
  classes: null,
8220
+ classesWithoutHost: null,
8201
8221
  residualClasses: undefined,
8202
8222
  classBindings: 0,
8203
8223
  styleBindings: 0,
@@ -8844,7 +8864,7 @@
8844
8864
  // https://jsperf.com/array-literal-vs-new-array-really
8845
8865
  var lContainer = new (ngDevMode ? LContainerArray : Array)(hostNative, // host native
8846
8866
  true, // Boolean `true` in this position signifies that this is an `LContainer`
8847
- -1 /* DYNAMIC_EMBEDDED_VIEWS_ONLY */ << 1 /* SHIFT */, // active index
8867
+ false, // has transplanted views
8848
8868
  currentView, // parent
8849
8869
  null, // next
8850
8870
  0, // transplanted views to refresh count
@@ -8858,10 +8878,10 @@
8858
8878
  return lContainer;
8859
8879
  }
8860
8880
  /**
8861
- * Goes over dynamic embedded views (ones created through ViewContainerRef APIs) and refreshes
8881
+ * Goes over embedded views (ones created through ViewContainerRef APIs) and refreshes
8862
8882
  * them by executing an associated template function.
8863
8883
  */
8864
- function refreshDynamicEmbeddedViews(lView) {
8884
+ function refreshEmbeddedViews(lView) {
8865
8885
  for (var lContainer = getFirstLContainer(lView); lContainer !== null; lContainer = getNextLContainer(lContainer)) {
8866
8886
  for (var i = CONTAINER_HEADER_OFFSET; i < lContainer.length; i++) {
8867
8887
  var embeddedLView = lContainer[i];
@@ -8873,60 +8893,31 @@
8873
8893
  }
8874
8894
  }
8875
8895
  }
8876
- /**
8877
- * Gets the first `LContainer` in the LView or `null` if none exists.
8878
- */
8879
- function getFirstLContainer(lView) {
8880
- var viewOrContainer = lView[CHILD_HEAD];
8881
- while (viewOrContainer !== null &&
8882
- !(isLContainer(viewOrContainer) &&
8883
- viewOrContainer[ACTIVE_INDEX] >> 1 /* SHIFT */ ===
8884
- -1 /* DYNAMIC_EMBEDDED_VIEWS_ONLY */)) {
8885
- viewOrContainer = viewOrContainer[NEXT];
8886
- }
8887
- return viewOrContainer;
8888
- }
8889
- /**
8890
- * Gets the next `LContainer` that is a sibling of the given container.
8891
- */
8892
- function getNextLContainer(container) {
8893
- var viewOrContainer = container[NEXT];
8894
- while (viewOrContainer !== null &&
8895
- !(isLContainer(viewOrContainer) &&
8896
- viewOrContainer[ACTIVE_INDEX] >> 1 /* SHIFT */ ===
8897
- -1 /* DYNAMIC_EMBEDDED_VIEWS_ONLY */)) {
8898
- viewOrContainer = viewOrContainer[NEXT];
8899
- }
8900
- return viewOrContainer;
8901
- }
8902
8896
  /**
8903
8897
  * Mark transplanted views as needing to be refreshed at their insertion points.
8904
8898
  *
8905
- * See: `ActiveIndexFlag.HAS_TRANSPLANTED_VIEWS` and `LView[DECLARATION_COMPONENT_VIEW]` for
8906
- * explanation of transplanted views.
8907
- *
8908
8899
  * @param lView The `LView` that may have transplanted views.
8909
8900
  */
8910
8901
  function markTransplantedViewsForRefresh(lView) {
8911
8902
  for (var lContainer = getFirstLContainer(lView); lContainer !== null; lContainer = getNextLContainer(lContainer)) {
8912
- if ((lContainer[ACTIVE_INDEX] & 1 /* HAS_TRANSPLANTED_VIEWS */) !== 0) {
8913
- var movedViews = lContainer[MOVED_VIEWS];
8914
- ngDevMode && assertDefined(movedViews, 'Transplanted View flags set but missing MOVED_VIEWS');
8915
- for (var i = 0; i < movedViews.length; i++) {
8916
- var movedLView = movedViews[i];
8917
- var insertionLContainer = movedLView[PARENT];
8918
- ngDevMode && assertLContainer(insertionLContainer);
8919
- // We don't want to increment the counter if the moved LView was already marked for
8920
- // refresh.
8921
- if ((movedLView[FLAGS] & 1024 /* RefreshTransplantedView */) === 0) {
8922
- updateTransplantedViewCount(insertionLContainer, 1);
8923
- }
8924
- // Note, it is possible that the `movedViews` is tracking views that are transplanted *and*
8925
- // those that aren't (declaration component === insertion component). In the latter case,
8926
- // it's fine to add the flag, as we will clear it immediately in
8927
- // `refreshDynamicEmbeddedViews` for the view currently being refreshed.
8928
- movedLView[FLAGS] |= 1024 /* RefreshTransplantedView */;
8903
+ if (!lContainer[HAS_TRANSPLANTED_VIEWS])
8904
+ continue;
8905
+ var movedViews = lContainer[MOVED_VIEWS];
8906
+ ngDevMode && assertDefined(movedViews, 'Transplanted View flags set but missing MOVED_VIEWS');
8907
+ for (var i = 0; i < movedViews.length; i++) {
8908
+ var movedLView = movedViews[i];
8909
+ var insertionLContainer = movedLView[PARENT];
8910
+ ngDevMode && assertLContainer(insertionLContainer);
8911
+ // We don't want to increment the counter if the moved LView was already marked for
8912
+ // refresh.
8913
+ if ((movedLView[FLAGS] & 1024 /* RefreshTransplantedView */) === 0) {
8914
+ updateTransplantedViewCount(insertionLContainer, 1);
8929
8915
  }
8916
+ // Note, it is possible that the `movedViews` is tracking views that are transplanted *and*
8917
+ // those that aren't (declaration component === insertion component). In the latter case,
8918
+ // it's fine to add the flag, as we will clear it immediately in
8919
+ // `refreshEmbeddedViews` for the view currently being refreshed.
8920
+ movedLView[FLAGS] |= 1024 /* RefreshTransplantedView */;
8930
8921
  }
8931
8922
  }
8932
8923
  }
@@ -9497,7 +9488,7 @@
9497
9488
  // At this point the declaration-component is not same as insertion-component; this means that
9498
9489
  // this is a transplanted view. Mark the declared lView as having transplanted views so that
9499
9490
  // those views can participate in CD.
9500
- declarationContainer[ACTIVE_INDEX] |= 1 /* HAS_TRANSPLANTED_VIEWS */;
9491
+ declarationContainer[HAS_TRANSPLANTED_VIEWS] = true;
9501
9492
  }
9502
9493
  if (movedViews === null) {
9503
9494
  declarationContainer[MOVED_VIEWS] = [lView];
@@ -10286,10 +10277,6 @@
10286
10277
  this._cdRefInjectingView = _cdRefInjectingView;
10287
10278
  this._appRef = null;
10288
10279
  this._viewContainerRef = null;
10289
- /**
10290
- * @internal
10291
- */
10292
- this._tViewNode = null;
10293
10280
  }
10294
10281
  Object.defineProperty(ViewRef.prototype, "rootNodes", {
10295
10282
  get: function () {
@@ -10682,9 +10669,7 @@
10682
10669
  embeddedLView[QUERIES] = declarationViewLQueries.createEmbeddedView(embeddedTView);
10683
10670
  }
10684
10671
  renderView(embeddedTView, embeddedLView, context);
10685
- var viewRef = new ViewRef(embeddedLView);
10686
- viewRef._tViewNode = embeddedLView[T_HOST];
10687
- return viewRef;
10672
+ return new ViewRef(embeddedLView);
10688
10673
  };
10689
10674
  return TemplateRef;
10690
10675
  }(TemplateRefToken));
@@ -10875,7 +10860,6 @@
10875
10860
  if (isLContainer(slotValue)) {
10876
10861
  // If the host is a container, we don't need to create a new LContainer
10877
10862
  lContainer = slotValue;
10878
- setLContainerActiveIndex(lContainer, -1 /* DYNAMIC_EMBEDDED_VIEWS_ONLY */);
10879
10863
  }
10880
10864
  else {
10881
10865
  var commentNode = void 0;
@@ -11066,7 +11050,7 @@
11066
11050
  var DELEGATE_CTOR = /^function\s+\S+\(\)\s*{[\s\S]+\.apply\(this,\s*arguments\)/;
11067
11051
  var INHERITED_CLASS = /^class\s+[A-Za-z\d$_]*\s*extends\s+[^{]+{/;
11068
11052
  var INHERITED_CLASS_WITH_CTOR = /^class\s+[A-Za-z\d$_]*\s*extends\s+[^{]+{[\s\S]*constructor\s*\(/;
11069
- var INHERITED_CLASS_WITH_DELEGATE_CTOR = /^class\s+[A-Za-z\d$_]*\s*extends\s+[^{]+{[\s\S]*constructor\s*\(\)\s*{\s+super\(\.\.\.arguments\)/;
11053
+ var INHERITED_CLASS_WITH_DELEGATE_CTOR = /^class\s+[A-Za-z\d$_]*\s*extends\s+[^{]+{[\s\S]*constructor\s*\(\)\s*{\s*super\(\.\.\.arguments\)/;
11070
11054
  /**
11071
11055
  * Determine whether a stringified type is a class which delegates its constructor
11072
11056
  * to its parent.
@@ -13527,29 +13511,34 @@
13527
13511
  *
13528
13512
  * @param tNode The `TNode` into which the styling information should be loaded.
13529
13513
  * @param attrs `TAttributes` containing the styling information.
13514
+ * @param writeToHost Where should the resulting static styles be written?
13515
+ * - `false` Write to `TNode.stylesWithoutHost` / `TNode.classesWithoutHost`
13516
+ * - `true` Write to `TNode.styles` / `TNode.classes`
13530
13517
  */
13531
- function computeStaticStyling(tNode, attrs) {
13518
+ function computeStaticStyling(tNode, attrs, writeToHost) {
13532
13519
  ngDevMode &&
13533
13520
  assertFirstCreatePass(getTView(), 'Expecting to be called in first template pass only');
13534
- var styles = tNode.styles;
13535
- var classes = tNode.classes;
13521
+ var styles = writeToHost ? tNode.styles : null;
13522
+ var classes = writeToHost ? tNode.classes : null;
13536
13523
  var mode = 0;
13537
- for (var i = 0; i < attrs.length; i++) {
13538
- var value = attrs[i];
13539
- if (typeof value === 'number') {
13540
- mode = value;
13541
- }
13542
- else if (mode == 1 /* Classes */) {
13543
- classes = concatStringsWithSpace(classes, value);
13544
- }
13545
- else if (mode == 2 /* Styles */) {
13546
- var style = value;
13547
- var styleValue = attrs[++i];
13548
- styles = concatStringsWithSpace(styles, style + ': ' + styleValue + ';');
13524
+ if (attrs !== null) {
13525
+ for (var i = 0; i < attrs.length; i++) {
13526
+ var value = attrs[i];
13527
+ if (typeof value === 'number') {
13528
+ mode = value;
13529
+ }
13530
+ else if (mode == 1 /* Classes */) {
13531
+ classes = concatStringsWithSpace(classes, value);
13532
+ }
13533
+ else if (mode == 2 /* Styles */) {
13534
+ var style = value;
13535
+ var styleValue = attrs[++i];
13536
+ styles = concatStringsWithSpace(styles, style + ': ' + styleValue + ';');
13537
+ }
13549
13538
  }
13550
13539
  }
13551
- styles !== null && (tNode.styles = styles);
13552
- classes !== null && (tNode.classes = classes);
13540
+ writeToHost ? tNode.styles = styles : tNode.stylesWithoutHost = styles;
13541
+ writeToHost ? tNode.classes = classes : tNode.classesWithoutHost = classes;
13553
13542
  }
13554
13543
 
13555
13544
  /**
@@ -14641,8 +14630,11 @@
14641
14630
  var tNode = getOrCreateTNode(tView, lView[T_HOST], index, 3 /* Element */, name, attrs);
14642
14631
  var hasDirectives = resolveDirectives(tView, lView, tNode, getConstant(tViewConsts, localRefsIndex));
14643
14632
  ngDevMode && warnAboutUnknownElement(tView, lView, native, tNode, hasDirectives);
14633
+ if (tNode.attrs !== null) {
14634
+ computeStaticStyling(tNode, tNode.attrs, false);
14635
+ }
14644
14636
  if (tNode.mergedAttrs !== null) {
14645
- computeStaticStyling(tNode, tNode.mergedAttrs);
14637
+ computeStaticStyling(tNode, tNode.mergedAttrs, true);
14646
14638
  }
14647
14639
  if (tView.queries !== null) {
14648
14640
  tView.queries.elementStart(tView, tNode);
@@ -14731,11 +14723,11 @@
14731
14723
  tView.queries.elementEnd(previousOrParentTNode);
14732
14724
  }
14733
14725
  }
14734
- if (tNode.classes !== null && hasClassInput(tNode)) {
14735
- setDirectiveInputsWhichShadowsStyling(tView, tNode, getLView(), tNode.classes, true);
14726
+ if (tNode.classesWithoutHost != null && hasClassInput(tNode)) {
14727
+ setDirectiveInputsWhichShadowsStyling(tView, tNode, getLView(), tNode.classesWithoutHost, true);
14736
14728
  }
14737
- if (tNode.styles !== null && hasStyleInput(tNode)) {
14738
- setDirectiveInputsWhichShadowsStyling(tView, tNode, getLView(), tNode.styles, false);
14729
+ if (tNode.stylesWithoutHost != null && hasStyleInput(tNode)) {
14730
+ setDirectiveInputsWhichShadowsStyling(tView, tNode, getLView(), tNode.stylesWithoutHost, false);
14739
14731
  }
14740
14732
  }
14741
14733
  /**
@@ -14803,7 +14795,7 @@
14803
14795
  // While ng-container doesn't necessarily support styling, we use the style context to identify
14804
14796
  // and execute directives on the ng-container.
14805
14797
  if (attrs !== null) {
14806
- computeStaticStyling(tNode, attrs);
14798
+ computeStaticStyling(tNode, attrs, true);
14807
14799
  }
14808
14800
  var localRefs = getConstant(tViewConsts, localRefsIndex);
14809
14801
  resolveDirectives(tView, lView, tNode, localRefs);
@@ -16686,7 +16678,7 @@
16686
16678
  // the binding has removed it. This would confuse `[ngStyle]`/`[ngClass]` to do the wrong
16687
16679
  // thing as it would think that the static portion was removed. For this reason we
16688
16680
  // concatenate it so that `[ngStyle]`/`[ngClass]` can continue to work on changed.
16689
- var staticPrefix = isClassBased ? tNode.classes : tNode.styles;
16681
+ var staticPrefix = isClassBased ? tNode.classesWithoutHost : tNode.stylesWithoutHost;
16690
16682
  ngDevMode && isClassBased === false && staticPrefix !== null &&
16691
16683
  assertEqual(staticPrefix.endsWith(';'), true, 'Expecting static portion to end with \';\'');
16692
16684
  if (staticPrefix !== null) {
@@ -19191,7 +19183,7 @@
19191
19183
  var tNode = getOrCreateTNode(tView, null, 0, 3 /* Element */, null, null);
19192
19184
  var mergedAttrs = tNode.mergedAttrs = def.hostAttrs;
19193
19185
  if (mergedAttrs !== null) {
19194
- computeStaticStyling(tNode, mergedAttrs);
19186
+ computeStaticStyling(tNode, mergedAttrs, true);
19195
19187
  if (rNode !== null) {
19196
19188
  setUpAttributes(hostRenderer, rNode, mergedAttrs);
19197
19189
  if (tNode.classes !== null) {
@@ -20227,7 +20219,7 @@
20227
20219
  /**
20228
20220
  * @publicApi
20229
20221
  */
20230
- var VERSION = new Version('9.1.7');
20222
+ var VERSION = new Version('9.1.11');
20231
20223
 
20232
20224
  /**
20233
20225
  * @license
@@ -23353,7 +23345,8 @@
23353
23345
  if (!rootSelectorOrNode || isIsolated) {
23354
23346
  // The host element of the internal or isolated root view is attached to the component's host
23355
23347
  // view node.
23356
- componentRef.hostView._tViewNode.child = tElementNode;
23348
+ ngDevMode && assertNodeOfPossibleTypes(rootTView.node, 2 /* View */);
23349
+ rootTView.node.child = tElementNode;
23357
23350
  }
23358
23351
  return componentRef;
23359
23352
  };
@@ -23388,7 +23381,7 @@
23388
23381
  _this.destroyCbs = [];
23389
23382
  _this.instance = instance;
23390
23383
  _this.hostView = _this.changeDetectorRef = new RootViewRef(_rootLView);
23391
- _this.hostView._tViewNode = assignTViewNodeToLView(_rootLView[TVIEW], null, -1, _rootLView);
23384
+ assignTViewNodeToLView(_rootLView[TVIEW], null, -1, _rootLView);
23392
23385
  _this.componentType = componentType;
23393
23386
  return _this;
23394
23387
  }