@angular/core 13.3.1 → 13.3.4
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.
- package/core.d.ts +5 -2
- package/esm2020/src/application_ref.mjs +53 -28
- package/esm2020/src/application_tokens.mjs +5 -2
- package/esm2020/src/change_detection/change_detection.mjs +2 -3
- package/esm2020/src/console.mjs +4 -3
- package/esm2020/src/platform_core_providers.mjs +3 -14
- package/esm2020/src/reflection/platform_reflection_capabilities.mjs +1 -1
- package/esm2020/src/reflection/reflector.mjs +1 -1
- package/esm2020/src/render3/context_discovery.mjs +1 -1
- package/esm2020/src/render3/errors.mjs +6 -3
- package/esm2020/src/render3/features/inherit_definition_feature.mjs +3 -2
- package/esm2020/src/render3/instructions/element.mjs +22 -7
- package/esm2020/src/render3/instructions/shared.mjs +40 -17
- package/esm2020/src/render3/interfaces/view.mjs +1 -1
- package/esm2020/src/render3/state.mjs +1 -1
- package/esm2020/src/render3/util/discovery_utils.mjs +1 -1
- package/esm2020/src/testability/testability.mjs +4 -3
- package/esm2020/src/version.mjs +1 -1
- package/esm2020/testing/src/logger.mjs +3 -3
- package/esm2020/testing/src/ng_zone_mock.mjs +3 -3
- package/fesm2015/core.mjs +131 -65
- package/fesm2015/core.mjs.map +1 -1
- package/fesm2015/testing.mjs +1 -1
- package/fesm2020/core.mjs +129 -65
- package/fesm2020/core.mjs.map +1 -1
- package/fesm2020/testing.mjs +1 -1
- package/package.json +1 -1
- package/schematics/migrations/testbed-teardown/index.js +1 -1
- package/testing/testing.d.ts +1 -1
package/fesm2015/core.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* @license Angular v13.3.
|
|
2
|
+
* @license Angular v13.3.4
|
|
3
3
|
* (c) 2010-2022 Google LLC. https://angular.io/
|
|
4
4
|
* License: MIT
|
|
5
5
|
*/
|
|
@@ -6718,8 +6718,10 @@ function maybeUnwrapFn(value) {
|
|
|
6718
6718
|
* found in the LICENSE file at https://angular.io/license
|
|
6719
6719
|
*/
|
|
6720
6720
|
/** Called when there are multiple component selectors that match a given node */
|
|
6721
|
-
function throwMultipleComponentError(tNode) {
|
|
6722
|
-
throw new RuntimeError(-300 /* MULTIPLE_COMPONENTS_MATCH */, `Multiple components match node with tagname ${tNode.value}`
|
|
6721
|
+
function throwMultipleComponentError(tNode, first, second) {
|
|
6722
|
+
throw new RuntimeError(-300 /* MULTIPLE_COMPONENTS_MATCH */, `Multiple components match node with tagname ${tNode.value}: ` +
|
|
6723
|
+
`${stringifyForError(first)} and ` +
|
|
6724
|
+
`${stringifyForError(second)}`);
|
|
6723
6725
|
}
|
|
6724
6726
|
/** Throws an ExpressionChangedAfterChecked error if checkNoChanges mode is on. */
|
|
6725
6727
|
function throwErrorIfNoChangesMode(creationMode, oldValue, currValue, propName) {
|
|
@@ -10031,9 +10033,9 @@ function elementPropertyInternal(tView, tNode, lView, propName, value, renderer,
|
|
|
10031
10033
|
propName = mapPropName(propName);
|
|
10032
10034
|
if (ngDevMode) {
|
|
10033
10035
|
validateAgainstEventProperties(propName);
|
|
10034
|
-
if (!validateProperty(
|
|
10036
|
+
if (!validateProperty(element, tNode.value, propName, tView.schemas)) {
|
|
10035
10037
|
// Return here since we only log warnings for unknown properties.
|
|
10036
|
-
logUnknownPropertyError(propName, tNode);
|
|
10038
|
+
logUnknownPropertyError(propName, tNode.value);
|
|
10037
10039
|
return;
|
|
10038
10040
|
}
|
|
10039
10041
|
ngDevMode.rendererSetProperty++;
|
|
@@ -10052,8 +10054,8 @@ function elementPropertyInternal(tView, tNode, lView, propName, value, renderer,
|
|
|
10052
10054
|
else if (tNode.type & 12 /* AnyContainer */) {
|
|
10053
10055
|
// If the node is a container and the property didn't
|
|
10054
10056
|
// match any of the inputs or schemas we should throw.
|
|
10055
|
-
if (ngDevMode && !matchingSchemas(tView, tNode.value)) {
|
|
10056
|
-
logUnknownPropertyError(propName, tNode);
|
|
10057
|
+
if (ngDevMode && !matchingSchemas(tView.schemas, tNode.value)) {
|
|
10058
|
+
logUnknownPropertyError(propName, tNode.value);
|
|
10057
10059
|
}
|
|
10058
10060
|
}
|
|
10059
10061
|
}
|
|
@@ -10105,24 +10107,44 @@ function setNgReflectProperties(lView, element, type, dataValue, value) {
|
|
|
10105
10107
|
}
|
|
10106
10108
|
}
|
|
10107
10109
|
}
|
|
10108
|
-
|
|
10110
|
+
/**
|
|
10111
|
+
* Validates that the property of the element is known at runtime and returns
|
|
10112
|
+
* false if it's not the case.
|
|
10113
|
+
* This check is relevant for JIT-compiled components (for AOT-compiled
|
|
10114
|
+
* ones this check happens at build time).
|
|
10115
|
+
*
|
|
10116
|
+
* The property is considered known if either:
|
|
10117
|
+
* - it's a known property of the element
|
|
10118
|
+
* - the element is allowed by one of the schemas
|
|
10119
|
+
* - the property is used for animations
|
|
10120
|
+
*
|
|
10121
|
+
* @param element Element to validate
|
|
10122
|
+
* @param tagName Name of the tag to check
|
|
10123
|
+
* @param propName Name of the property to check
|
|
10124
|
+
* @param schemas Array of schemas
|
|
10125
|
+
*/
|
|
10126
|
+
function validateProperty(element, tagName, propName, schemas) {
|
|
10109
10127
|
// If `schemas` is set to `null`, that's an indication that this Component was compiled in AOT
|
|
10110
10128
|
// mode where this check happens at compile time. In JIT mode, `schemas` is always present and
|
|
10111
10129
|
// defined as an array (as an empty array in case `schemas` field is not defined) and we should
|
|
10112
10130
|
// execute the check below.
|
|
10113
|
-
if (
|
|
10131
|
+
if (schemas === null)
|
|
10114
10132
|
return true;
|
|
10115
|
-
// The property is considered valid if the element matches the schema, it exists on the element
|
|
10133
|
+
// The property is considered valid if the element matches the schema, it exists on the element,
|
|
10116
10134
|
// or it is synthetic, and we are in a browser context (web worker nodes should be skipped).
|
|
10117
|
-
if (matchingSchemas(
|
|
10135
|
+
if (matchingSchemas(schemas, tagName) || propName in element || isAnimationProp(propName)) {
|
|
10118
10136
|
return true;
|
|
10119
10137
|
}
|
|
10120
10138
|
// Note: `typeof Node` returns 'function' in most browsers, but on IE it is 'object' so we
|
|
10121
|
-
// need to account for both here, while being careful
|
|
10139
|
+
// need to account for both here, while being careful with `typeof null` also returning 'object'.
|
|
10122
10140
|
return typeof Node === 'undefined' || Node === null || !(element instanceof Node);
|
|
10123
10141
|
}
|
|
10124
|
-
|
|
10125
|
-
|
|
10142
|
+
/**
|
|
10143
|
+
* Returns true if the tag name is allowed by specified schemas.
|
|
10144
|
+
* @param schemas Array of schemas
|
|
10145
|
+
* @param tagName Name of the tag
|
|
10146
|
+
*/
|
|
10147
|
+
function matchingSchemas(schemas, tagName) {
|
|
10126
10148
|
if (schemas !== null) {
|
|
10127
10149
|
for (let i = 0; i < schemas.length; i++) {
|
|
10128
10150
|
const schema = schemas[i];
|
|
@@ -10137,10 +10159,10 @@ function matchingSchemas(tView, tagName) {
|
|
|
10137
10159
|
/**
|
|
10138
10160
|
* Logs an error that a property is not supported on an element.
|
|
10139
10161
|
* @param propName Name of the invalid property.
|
|
10140
|
-
* @param
|
|
10162
|
+
* @param tagName Name of the node on which we encountered the property.
|
|
10141
10163
|
*/
|
|
10142
|
-
function logUnknownPropertyError(propName,
|
|
10143
|
-
|
|
10164
|
+
function logUnknownPropertyError(propName, tagName) {
|
|
10165
|
+
const message = `Can't bind to '${propName}' since it isn't a known property of '${tagName}'.`;
|
|
10144
10166
|
console.error(formatRuntimeError(303 /* UNKNOWN_BINDING */, message));
|
|
10145
10167
|
}
|
|
10146
10168
|
/**
|
|
@@ -10358,8 +10380,11 @@ function findDirectiveDefMatches(tView, viewData, tNode) {
|
|
|
10358
10380
|
if (ngDevMode) {
|
|
10359
10381
|
assertTNodeType(tNode, 2 /* Element */, `"${tNode.value}" tags cannot be used as component hosts. ` +
|
|
10360
10382
|
`Please use a different tag to activate the ${stringify(def.type)} component.`);
|
|
10361
|
-
if (tNode.flags & 2 /* isComponentHost */)
|
|
10362
|
-
|
|
10383
|
+
if (tNode.flags & 2 /* isComponentHost */) {
|
|
10384
|
+
// If another component has been matched previously, it's the first element in the
|
|
10385
|
+
// `matches` array, see how we store components/directives in `matches` below.
|
|
10386
|
+
throwMultipleComponentError(tNode, matches[0].type, def.type);
|
|
10387
|
+
}
|
|
10363
10388
|
}
|
|
10364
10389
|
markAsComponentHost(tView, tNode);
|
|
10365
10390
|
// The component is always stored first with directives after.
|
|
@@ -12358,7 +12383,7 @@ function ɵɵInheritDefinitionFeature(definition) {
|
|
|
12358
12383
|
else {
|
|
12359
12384
|
if (superType.ɵcmp) {
|
|
12360
12385
|
const errorMessage = (typeof ngDevMode === 'undefined' || ngDevMode) ?
|
|
12361
|
-
|
|
12386
|
+
`Directives cannot inherit Components. Directive ${stringifyForError(definition.type)} is attempting to extend component ${stringifyForError(superType)}` :
|
|
12362
12387
|
'';
|
|
12363
12388
|
throw new RuntimeError(903 /* INVALID_INHERITANCE */, errorMessage);
|
|
12364
12389
|
}
|
|
@@ -14473,7 +14498,7 @@ function elementStartFirstCreatePass(index, tView, lView, native, name, attrsInd
|
|
|
14473
14498
|
const attrs = getConstant(tViewConsts, attrsIndex);
|
|
14474
14499
|
const tNode = getOrCreateTNode(tView, index, 2 /* Element */, name, attrs);
|
|
14475
14500
|
const hasDirectives = resolveDirectives(tView, lView, tNode, getConstant(tViewConsts, localRefsIndex));
|
|
14476
|
-
ngDevMode &&
|
|
14501
|
+
ngDevMode && validateElementIsKnown(native, tNode.value, tView.schemas, hasDirectives);
|
|
14477
14502
|
if (tNode.attrs !== null) {
|
|
14478
14503
|
computeStaticStyling(tNode, tNode.attrs, false);
|
|
14479
14504
|
}
|
|
@@ -14597,18 +14622,33 @@ function ɵɵelement(index, name, attrsIndex, localRefsIndex) {
|
|
|
14597
14622
|
ɵɵelementEnd();
|
|
14598
14623
|
return ɵɵelement;
|
|
14599
14624
|
}
|
|
14600
|
-
|
|
14601
|
-
|
|
14625
|
+
/**
|
|
14626
|
+
* Validates that the element is known at runtime and produces
|
|
14627
|
+
* an error if it's not the case.
|
|
14628
|
+
* This check is relevant for JIT-compiled components (for AOT-compiled
|
|
14629
|
+
* ones this check happens at build time).
|
|
14630
|
+
*
|
|
14631
|
+
* The element is considered known if either:
|
|
14632
|
+
* - it's a known HTML element
|
|
14633
|
+
* - it's a known custom element
|
|
14634
|
+
* - the element matches any directive
|
|
14635
|
+
* - the element is allowed by one of the schemas
|
|
14636
|
+
*
|
|
14637
|
+
* @param element Element to validate
|
|
14638
|
+
* @param tagName Name of the tag to check
|
|
14639
|
+
* @param schemas Array of schemas
|
|
14640
|
+
* @param hasDirectives Boolean indicating that the element matches any directive
|
|
14641
|
+
*/
|
|
14642
|
+
function validateElementIsKnown(element, tagName, schemas, hasDirectives) {
|
|
14602
14643
|
// If `schemas` is set to `null`, that's an indication that this Component was compiled in AOT
|
|
14603
14644
|
// mode where this check happens at compile time. In JIT mode, `schemas` is always present and
|
|
14604
14645
|
// defined as an array (as an empty array in case `schemas` field is not defined) and we should
|
|
14605
14646
|
// execute the check below.
|
|
14606
14647
|
if (schemas === null)
|
|
14607
14648
|
return;
|
|
14608
|
-
const tagName = tNode.value;
|
|
14609
14649
|
// If the element matches any directive, it's considered as valid.
|
|
14610
14650
|
if (!hasDirectives && tagName !== null) {
|
|
14611
|
-
// The element is unknown if it's an instance of HTMLUnknownElement or it isn't registered
|
|
14651
|
+
// The element is unknown if it's an instance of HTMLUnknownElement, or it isn't registered
|
|
14612
14652
|
// as a custom element. Note that unknown elements with a dash in their name won't be instances
|
|
14613
14653
|
// of HTMLUnknownElement in browsers that support web components.
|
|
14614
14654
|
const isUnknown =
|
|
@@ -14618,7 +14658,7 @@ function logUnknownElementError(tView, element, tNode, hasDirectives) {
|
|
|
14618
14658
|
element instanceof HTMLUnknownElement) ||
|
|
14619
14659
|
(typeof customElements !== 'undefined' && tagName.indexOf('-') > -1 &&
|
|
14620
14660
|
!customElements.get(tagName));
|
|
14621
|
-
if (isUnknown && !matchingSchemas(
|
|
14661
|
+
if (isUnknown && !matchingSchemas(schemas, tagName)) {
|
|
14622
14662
|
let message = `'${tagName}' is not a known element:\n`;
|
|
14623
14663
|
message += `1. If '${tagName}' is an Angular component, then verify that it is part of this module.\n`;
|
|
14624
14664
|
if (tagName && tagName.indexOf('-') > -1) {
|
|
@@ -21088,7 +21128,7 @@ class Version {
|
|
|
21088
21128
|
/**
|
|
21089
21129
|
* @publicApi
|
|
21090
21130
|
*/
|
|
21091
|
-
const VERSION = new Version('13.3.
|
|
21131
|
+
const VERSION = new Version('13.3.4');
|
|
21092
21132
|
|
|
21093
21133
|
/**
|
|
21094
21134
|
* @license
|
|
@@ -24857,7 +24897,10 @@ const PLATFORM_INITIALIZER = new InjectionToken('Platform Initializer');
|
|
|
24857
24897
|
* A token that indicates an opaque platform ID.
|
|
24858
24898
|
* @publicApi
|
|
24859
24899
|
*/
|
|
24860
|
-
const PLATFORM_ID = new InjectionToken('Platform ID'
|
|
24900
|
+
const PLATFORM_ID = new InjectionToken('Platform ID', {
|
|
24901
|
+
providedIn: 'platform',
|
|
24902
|
+
factory: () => 'unknown', // set a default platform name, when none set explicitly
|
|
24903
|
+
});
|
|
24861
24904
|
/**
|
|
24862
24905
|
* A [DI token](guide/glossary#di-token "DI token definition") that provides a set of callbacks to
|
|
24863
24906
|
* be called for every component that is bootstrapped.
|
|
@@ -24895,10 +24938,11 @@ class Console {
|
|
|
24895
24938
|
}
|
|
24896
24939
|
}
|
|
24897
24940
|
Console.ɵfac = function Console_Factory(t) { return new (t || Console)(); };
|
|
24898
|
-
Console.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: Console, factory: Console.ɵfac });
|
|
24941
|
+
Console.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: Console, factory: Console.ɵfac, providedIn: 'platform' });
|
|
24899
24942
|
(function () {
|
|
24900
24943
|
(typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(Console, [{
|
|
24901
|
-
type: Injectable
|
|
24944
|
+
type: Injectable,
|
|
24945
|
+
args: [{ providedIn: 'platform' }]
|
|
24902
24946
|
}], null, null);
|
|
24903
24947
|
})();
|
|
24904
24948
|
|
|
@@ -25861,10 +25905,11 @@ class TestabilityRegistry {
|
|
|
25861
25905
|
}
|
|
25862
25906
|
}
|
|
25863
25907
|
TestabilityRegistry.ɵfac = function TestabilityRegistry_Factory(t) { return new (t || TestabilityRegistry)(); };
|
|
25864
|
-
TestabilityRegistry.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: TestabilityRegistry, factory: TestabilityRegistry.ɵfac });
|
|
25908
|
+
TestabilityRegistry.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: TestabilityRegistry, factory: TestabilityRegistry.ɵfac, providedIn: 'platform' });
|
|
25865
25909
|
(function () {
|
|
25866
25910
|
(typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(TestabilityRegistry, [{
|
|
25867
|
-
type: Injectable
|
|
25911
|
+
type: Injectable,
|
|
25912
|
+
args: [{ providedIn: 'platform' }]
|
|
25868
25913
|
}], function () { return []; }, null);
|
|
25869
25914
|
})();
|
|
25870
25915
|
class _NoopGetTestability {
|
|
@@ -25889,7 +25934,19 @@ let _testabilityGetter = new _NoopGetTestability();
|
|
|
25889
25934
|
* Use of this source code is governed by an MIT-style license that can be
|
|
25890
25935
|
* found in the LICENSE file at https://angular.io/license
|
|
25891
25936
|
*/
|
|
25892
|
-
let
|
|
25937
|
+
let _platformInjector = null;
|
|
25938
|
+
/**
|
|
25939
|
+
* Internal token to indicate whether having multiple bootstrapped platform should be allowed (only
|
|
25940
|
+
* one bootstrapped platform is allowed by default). This token helps to support SSR scenarios.
|
|
25941
|
+
*/
|
|
25942
|
+
const ALLOW_MULTIPLE_PLATFORMS = new InjectionToken('AllowMultipleToken');
|
|
25943
|
+
/**
|
|
25944
|
+
* Internal token that allows to register extra callbacks that should be invoked during the
|
|
25945
|
+
* `PlatformRef.destroy` operation. This token is needed to avoid a direct reference to the
|
|
25946
|
+
* `PlatformRef` class (i.e. register the callback via `PlatformRef.onDestroy`), thus making the
|
|
25947
|
+
* entire class tree-shakeable.
|
|
25948
|
+
*/
|
|
25949
|
+
const PLATFORM_ON_DESTROY = new InjectionToken('PlatformOnDestroy');
|
|
25893
25950
|
function compileNgModuleFactory(injector, options, moduleType) {
|
|
25894
25951
|
ngDevMode && assertNgModuleType(moduleType);
|
|
25895
25952
|
const moduleFactory = new NgModuleFactory(moduleType);
|
|
@@ -25934,7 +25991,6 @@ function publishDefaultGlobalUtils() {
|
|
|
25934
25991
|
function isBoundToModule(cf) {
|
|
25935
25992
|
return cf.isBoundToModule;
|
|
25936
25993
|
}
|
|
25937
|
-
const ALLOW_MULTIPLE_PLATFORMS = new InjectionToken('AllowMultipleToken');
|
|
25938
25994
|
/**
|
|
25939
25995
|
* A token for third-party components that can register themselves with NgProbe.
|
|
25940
25996
|
*
|
|
@@ -25953,19 +26009,19 @@ class NgProbeToken {
|
|
|
25953
26009
|
* @publicApi
|
|
25954
26010
|
*/
|
|
25955
26011
|
function createPlatform(injector) {
|
|
25956
|
-
if (
|
|
25957
|
-
!_platform.injector.get(ALLOW_MULTIPLE_PLATFORMS, false)) {
|
|
26012
|
+
if (_platformInjector && !_platformInjector.get(ALLOW_MULTIPLE_PLATFORMS, false)) {
|
|
25958
26013
|
const errorMessage = (typeof ngDevMode === 'undefined' || ngDevMode) ?
|
|
25959
26014
|
'There can be only one platform. Destroy the previous one to create a new one.' :
|
|
25960
26015
|
'';
|
|
25961
26016
|
throw new RuntimeError(400 /* MULTIPLE_PLATFORMS */, errorMessage);
|
|
25962
26017
|
}
|
|
25963
26018
|
publishDefaultGlobalUtils();
|
|
25964
|
-
|
|
26019
|
+
_platformInjector = injector;
|
|
26020
|
+
const platform = injector.get(PlatformRef);
|
|
25965
26021
|
const inits = injector.get(PLATFORM_INITIALIZER, null);
|
|
25966
26022
|
if (inits)
|
|
25967
|
-
inits.forEach(
|
|
25968
|
-
return
|
|
26023
|
+
inits.forEach(initFn => initFn());
|
|
26024
|
+
return platform;
|
|
25969
26025
|
}
|
|
25970
26026
|
/**
|
|
25971
26027
|
* Creates a factory for a platform. Can be used to provide or override `Providers` specific to
|
|
@@ -25984,15 +26040,16 @@ function createPlatformFactory(parentPlatformFactory, name, providers = []) {
|
|
|
25984
26040
|
return (extraProviders = []) => {
|
|
25985
26041
|
let platform = getPlatform();
|
|
25986
26042
|
if (!platform || platform.injector.get(ALLOW_MULTIPLE_PLATFORMS, false)) {
|
|
26043
|
+
const platformProviders = [
|
|
26044
|
+
...providers,
|
|
26045
|
+
...extraProviders,
|
|
26046
|
+
{ provide: marker, useValue: true }
|
|
26047
|
+
];
|
|
25987
26048
|
if (parentPlatformFactory) {
|
|
25988
|
-
parentPlatformFactory(
|
|
26049
|
+
parentPlatformFactory(platformProviders);
|
|
25989
26050
|
}
|
|
25990
26051
|
else {
|
|
25991
|
-
|
|
25992
|
-
provide: INJECTOR_SCOPE,
|
|
25993
|
-
useValue: 'platform'
|
|
25994
|
-
});
|
|
25995
|
-
createPlatform(Injector.create({ providers: injectedProviders, name: desc }));
|
|
26052
|
+
createPlatform(createPlatformInjector(platformProviders, desc));
|
|
25996
26053
|
}
|
|
25997
26054
|
}
|
|
25998
26055
|
return assertPlatform(marker);
|
|
@@ -26015,6 +26072,20 @@ function assertPlatform(requiredToken) {
|
|
|
26015
26072
|
}
|
|
26016
26073
|
return platform;
|
|
26017
26074
|
}
|
|
26075
|
+
/**
|
|
26076
|
+
* Helper function to create an instance of a platform injector (that maintains the 'platform'
|
|
26077
|
+
* scope).
|
|
26078
|
+
*/
|
|
26079
|
+
function createPlatformInjector(providers = [], name) {
|
|
26080
|
+
return Injector.create({
|
|
26081
|
+
name,
|
|
26082
|
+
providers: [
|
|
26083
|
+
{ provide: INJECTOR_SCOPE, useValue: 'platform' },
|
|
26084
|
+
{ provide: PLATFORM_ON_DESTROY, useValue: () => _platformInjector = null },
|
|
26085
|
+
...providers
|
|
26086
|
+
],
|
|
26087
|
+
});
|
|
26088
|
+
}
|
|
26018
26089
|
/**
|
|
26019
26090
|
* Destroys the current Angular platform and all Angular applications on the page.
|
|
26020
26091
|
* Destroys all modules and listeners registered with the platform.
|
|
@@ -26022,9 +26093,8 @@ function assertPlatform(requiredToken) {
|
|
|
26022
26093
|
* @publicApi
|
|
26023
26094
|
*/
|
|
26024
26095
|
function destroyPlatform() {
|
|
26025
|
-
|
|
26026
|
-
|
|
26027
|
-
}
|
|
26096
|
+
var _a;
|
|
26097
|
+
(_a = getPlatform()) === null || _a === void 0 ? void 0 : _a.destroy();
|
|
26028
26098
|
}
|
|
26029
26099
|
/**
|
|
26030
26100
|
* Returns the current platform.
|
|
@@ -26032,7 +26102,8 @@ function destroyPlatform() {
|
|
|
26032
26102
|
* @publicApi
|
|
26033
26103
|
*/
|
|
26034
26104
|
function getPlatform() {
|
|
26035
|
-
|
|
26105
|
+
var _a;
|
|
26106
|
+
return (_a = _platformInjector === null || _platformInjector === void 0 ? void 0 : _platformInjector.get(PlatformRef)) !== null && _a !== void 0 ? _a : null;
|
|
26036
26107
|
}
|
|
26037
26108
|
/**
|
|
26038
26109
|
* The Angular platform is the entry point for Angular on a web page.
|
|
@@ -26170,6 +26241,8 @@ class PlatformRef {
|
|
|
26170
26241
|
}
|
|
26171
26242
|
this._modules.slice().forEach(module => module.destroy());
|
|
26172
26243
|
this._destroyListeners.forEach(listener => listener());
|
|
26244
|
+
const destroyListener = this._injector.get(PLATFORM_ON_DESTROY, null);
|
|
26245
|
+
destroyListener === null || destroyListener === void 0 ? void 0 : destroyListener();
|
|
26173
26246
|
this._destroyed = true;
|
|
26174
26247
|
}
|
|
26175
26248
|
get destroyed() {
|
|
@@ -26177,10 +26250,11 @@ class PlatformRef {
|
|
|
26177
26250
|
}
|
|
26178
26251
|
}
|
|
26179
26252
|
PlatformRef.ɵfac = function PlatformRef_Factory(t) { return new (t || PlatformRef)(ɵɵinject(Injector)); };
|
|
26180
|
-
PlatformRef.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: PlatformRef, factory: PlatformRef.ɵfac });
|
|
26253
|
+
PlatformRef.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: PlatformRef, factory: PlatformRef.ɵfac, providedIn: 'platform' });
|
|
26181
26254
|
(function () {
|
|
26182
26255
|
(typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(PlatformRef, [{
|
|
26183
|
-
type: Injectable
|
|
26256
|
+
type: Injectable,
|
|
26257
|
+
args: [{ providedIn: 'platform' }]
|
|
26184
26258
|
}], function () { return [{ type: Injector }]; }, null);
|
|
26185
26259
|
})();
|
|
26186
26260
|
function getNgZone(ngZoneOption, extra) {
|
|
@@ -26319,11 +26393,10 @@ function optionsReducer(dst, objs) {
|
|
|
26319
26393
|
*/
|
|
26320
26394
|
class ApplicationRef {
|
|
26321
26395
|
/** @internal */
|
|
26322
|
-
constructor(_zone, _injector, _exceptionHandler,
|
|
26396
|
+
constructor(_zone, _injector, _exceptionHandler, _initStatus) {
|
|
26323
26397
|
this._zone = _zone;
|
|
26324
26398
|
this._injector = _injector;
|
|
26325
26399
|
this._exceptionHandler = _exceptionHandler;
|
|
26326
|
-
this._componentFactoryResolver = _componentFactoryResolver;
|
|
26327
26400
|
this._initStatus = _initStatus;
|
|
26328
26401
|
/** @internal */
|
|
26329
26402
|
this._bootstrapListeners = [];
|
|
@@ -26439,8 +26512,8 @@ class ApplicationRef {
|
|
|
26439
26512
|
componentFactory = componentOrFactory;
|
|
26440
26513
|
}
|
|
26441
26514
|
else {
|
|
26442
|
-
|
|
26443
|
-
|
|
26515
|
+
const resolver = this._injector.get(ComponentFactoryResolver$1);
|
|
26516
|
+
componentFactory = resolver.resolveComponentFactory(componentOrFactory);
|
|
26444
26517
|
}
|
|
26445
26518
|
this.componentTypes.push(componentFactory.componentType);
|
|
26446
26519
|
// Create a factory associated with the current module if it's not bound to some other
|
|
@@ -26541,13 +26614,13 @@ class ApplicationRef {
|
|
|
26541
26614
|
return this._views.length;
|
|
26542
26615
|
}
|
|
26543
26616
|
}
|
|
26544
|
-
ApplicationRef.ɵfac = function ApplicationRef_Factory(t) { return new (t || ApplicationRef)(ɵɵinject(NgZone), ɵɵinject(Injector), ɵɵinject(ErrorHandler), ɵɵinject(
|
|
26617
|
+
ApplicationRef.ɵfac = function ApplicationRef_Factory(t) { return new (t || ApplicationRef)(ɵɵinject(NgZone), ɵɵinject(Injector), ɵɵinject(ErrorHandler), ɵɵinject(ApplicationInitStatus)); };
|
|
26545
26618
|
ApplicationRef.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: ApplicationRef, factory: ApplicationRef.ɵfac, providedIn: 'root' });
|
|
26546
26619
|
(function () {
|
|
26547
26620
|
(typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(ApplicationRef, [{
|
|
26548
26621
|
type: Injectable,
|
|
26549
26622
|
args: [{ providedIn: 'root' }]
|
|
26550
|
-
}], function () { return [{ type: NgZone }, { type: Injector }, { type: ErrorHandler }, { type:
|
|
26623
|
+
}], function () { return [{ type: NgZone }, { type: Injector }, { type: ErrorHandler }, { type: ApplicationInitStatus }]; }, null);
|
|
26551
26624
|
})();
|
|
26552
26625
|
function remove(list, el) {
|
|
26553
26626
|
const index = list.indexOf(el);
|
|
@@ -28530,19 +28603,12 @@ const defaultKeyValueDiffers = new KeyValueDiffers(keyValDiff);
|
|
|
28530
28603
|
* Use of this source code is governed by an MIT-style license that can be
|
|
28531
28604
|
* found in the LICENSE file at https://angular.io/license
|
|
28532
28605
|
*/
|
|
28533
|
-
const _CORE_PLATFORM_PROVIDERS = [
|
|
28534
|
-
// Set a default platform name for platforms that don't set it explicitly.
|
|
28535
|
-
{ provide: PLATFORM_ID, useValue: 'unknown' },
|
|
28536
|
-
{ provide: PlatformRef, deps: [Injector] },
|
|
28537
|
-
{ provide: TestabilityRegistry, deps: [] },
|
|
28538
|
-
{ provide: Console, deps: [] },
|
|
28539
|
-
];
|
|
28540
28606
|
/**
|
|
28541
28607
|
* This platform has to be included in any other platform
|
|
28542
28608
|
*
|
|
28543
28609
|
* @publicApi
|
|
28544
28610
|
*/
|
|
28545
|
-
const platformCore = createPlatformFactory(null, 'core',
|
|
28611
|
+
const platformCore = createPlatformFactory(null, 'core', []);
|
|
28546
28612
|
|
|
28547
28613
|
/**
|
|
28548
28614
|
* Re-exported by `BrowserModule`, which is included automatically in the root
|