@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/testing.mjs
CHANGED
package/fesm2020/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
|
*/
|
|
@@ -6733,8 +6733,10 @@ function maybeUnwrapFn(value) {
|
|
|
6733
6733
|
* found in the LICENSE file at https://angular.io/license
|
|
6734
6734
|
*/
|
|
6735
6735
|
/** Called when there are multiple component selectors that match a given node */
|
|
6736
|
-
function throwMultipleComponentError(tNode) {
|
|
6737
|
-
throw new RuntimeError(-300 /* MULTIPLE_COMPONENTS_MATCH */, `Multiple components match node with tagname ${tNode.value}`
|
|
6736
|
+
function throwMultipleComponentError(tNode, first, second) {
|
|
6737
|
+
throw new RuntimeError(-300 /* MULTIPLE_COMPONENTS_MATCH */, `Multiple components match node with tagname ${tNode.value}: ` +
|
|
6738
|
+
`${stringifyForError(first)} and ` +
|
|
6739
|
+
`${stringifyForError(second)}`);
|
|
6738
6740
|
}
|
|
6739
6741
|
/** Throws an ExpressionChangedAfterChecked error if checkNoChanges mode is on. */
|
|
6740
6742
|
function throwErrorIfNoChangesMode(creationMode, oldValue, currValue, propName) {
|
|
@@ -10046,9 +10048,9 @@ function elementPropertyInternal(tView, tNode, lView, propName, value, renderer,
|
|
|
10046
10048
|
propName = mapPropName(propName);
|
|
10047
10049
|
if (ngDevMode) {
|
|
10048
10050
|
validateAgainstEventProperties(propName);
|
|
10049
|
-
if (!validateProperty(
|
|
10051
|
+
if (!validateProperty(element, tNode.value, propName, tView.schemas)) {
|
|
10050
10052
|
// Return here since we only log warnings for unknown properties.
|
|
10051
|
-
logUnknownPropertyError(propName, tNode);
|
|
10053
|
+
logUnknownPropertyError(propName, tNode.value);
|
|
10052
10054
|
return;
|
|
10053
10055
|
}
|
|
10054
10056
|
ngDevMode.rendererSetProperty++;
|
|
@@ -10067,8 +10069,8 @@ function elementPropertyInternal(tView, tNode, lView, propName, value, renderer,
|
|
|
10067
10069
|
else if (tNode.type & 12 /* AnyContainer */) {
|
|
10068
10070
|
// If the node is a container and the property didn't
|
|
10069
10071
|
// match any of the inputs or schemas we should throw.
|
|
10070
|
-
if (ngDevMode && !matchingSchemas(tView, tNode.value)) {
|
|
10071
|
-
logUnknownPropertyError(propName, tNode);
|
|
10072
|
+
if (ngDevMode && !matchingSchemas(tView.schemas, tNode.value)) {
|
|
10073
|
+
logUnknownPropertyError(propName, tNode.value);
|
|
10072
10074
|
}
|
|
10073
10075
|
}
|
|
10074
10076
|
}
|
|
@@ -10120,24 +10122,44 @@ function setNgReflectProperties(lView, element, type, dataValue, value) {
|
|
|
10120
10122
|
}
|
|
10121
10123
|
}
|
|
10122
10124
|
}
|
|
10123
|
-
|
|
10125
|
+
/**
|
|
10126
|
+
* Validates that the property of the element is known at runtime and returns
|
|
10127
|
+
* false if it's not the case.
|
|
10128
|
+
* This check is relevant for JIT-compiled components (for AOT-compiled
|
|
10129
|
+
* ones this check happens at build time).
|
|
10130
|
+
*
|
|
10131
|
+
* The property is considered known if either:
|
|
10132
|
+
* - it's a known property of the element
|
|
10133
|
+
* - the element is allowed by one of the schemas
|
|
10134
|
+
* - the property is used for animations
|
|
10135
|
+
*
|
|
10136
|
+
* @param element Element to validate
|
|
10137
|
+
* @param tagName Name of the tag to check
|
|
10138
|
+
* @param propName Name of the property to check
|
|
10139
|
+
* @param schemas Array of schemas
|
|
10140
|
+
*/
|
|
10141
|
+
function validateProperty(element, tagName, propName, schemas) {
|
|
10124
10142
|
// If `schemas` is set to `null`, that's an indication that this Component was compiled in AOT
|
|
10125
10143
|
// mode where this check happens at compile time. In JIT mode, `schemas` is always present and
|
|
10126
10144
|
// defined as an array (as an empty array in case `schemas` field is not defined) and we should
|
|
10127
10145
|
// execute the check below.
|
|
10128
|
-
if (
|
|
10146
|
+
if (schemas === null)
|
|
10129
10147
|
return true;
|
|
10130
|
-
// The property is considered valid if the element matches the schema, it exists on the element
|
|
10148
|
+
// The property is considered valid if the element matches the schema, it exists on the element,
|
|
10131
10149
|
// or it is synthetic, and we are in a browser context (web worker nodes should be skipped).
|
|
10132
|
-
if (matchingSchemas(
|
|
10150
|
+
if (matchingSchemas(schemas, tagName) || propName in element || isAnimationProp(propName)) {
|
|
10133
10151
|
return true;
|
|
10134
10152
|
}
|
|
10135
10153
|
// Note: `typeof Node` returns 'function' in most browsers, but on IE it is 'object' so we
|
|
10136
|
-
// need to account for both here, while being careful
|
|
10154
|
+
// need to account for both here, while being careful with `typeof null` also returning 'object'.
|
|
10137
10155
|
return typeof Node === 'undefined' || Node === null || !(element instanceof Node);
|
|
10138
10156
|
}
|
|
10139
|
-
|
|
10140
|
-
|
|
10157
|
+
/**
|
|
10158
|
+
* Returns true if the tag name is allowed by specified schemas.
|
|
10159
|
+
* @param schemas Array of schemas
|
|
10160
|
+
* @param tagName Name of the tag
|
|
10161
|
+
*/
|
|
10162
|
+
function matchingSchemas(schemas, tagName) {
|
|
10141
10163
|
if (schemas !== null) {
|
|
10142
10164
|
for (let i = 0; i < schemas.length; i++) {
|
|
10143
10165
|
const schema = schemas[i];
|
|
@@ -10152,10 +10174,10 @@ function matchingSchemas(tView, tagName) {
|
|
|
10152
10174
|
/**
|
|
10153
10175
|
* Logs an error that a property is not supported on an element.
|
|
10154
10176
|
* @param propName Name of the invalid property.
|
|
10155
|
-
* @param
|
|
10177
|
+
* @param tagName Name of the node on which we encountered the property.
|
|
10156
10178
|
*/
|
|
10157
|
-
function logUnknownPropertyError(propName,
|
|
10158
|
-
|
|
10179
|
+
function logUnknownPropertyError(propName, tagName) {
|
|
10180
|
+
const message = `Can't bind to '${propName}' since it isn't a known property of '${tagName}'.`;
|
|
10159
10181
|
console.error(formatRuntimeError(303 /* UNKNOWN_BINDING */, message));
|
|
10160
10182
|
}
|
|
10161
10183
|
/**
|
|
@@ -10373,8 +10395,11 @@ function findDirectiveDefMatches(tView, viewData, tNode) {
|
|
|
10373
10395
|
if (ngDevMode) {
|
|
10374
10396
|
assertTNodeType(tNode, 2 /* Element */, `"${tNode.value}" tags cannot be used as component hosts. ` +
|
|
10375
10397
|
`Please use a different tag to activate the ${stringify(def.type)} component.`);
|
|
10376
|
-
if (tNode.flags & 2 /* isComponentHost */)
|
|
10377
|
-
|
|
10398
|
+
if (tNode.flags & 2 /* isComponentHost */) {
|
|
10399
|
+
// If another component has been matched previously, it's the first element in the
|
|
10400
|
+
// `matches` array, see how we store components/directives in `matches` below.
|
|
10401
|
+
throwMultipleComponentError(tNode, matches[0].type, def.type);
|
|
10402
|
+
}
|
|
10378
10403
|
}
|
|
10379
10404
|
markAsComponentHost(tView, tNode);
|
|
10380
10405
|
// The component is always stored first with directives after.
|
|
@@ -12372,7 +12397,7 @@ function ɵɵInheritDefinitionFeature(definition) {
|
|
|
12372
12397
|
else {
|
|
12373
12398
|
if (superType.ɵcmp) {
|
|
12374
12399
|
const errorMessage = (typeof ngDevMode === 'undefined' || ngDevMode) ?
|
|
12375
|
-
|
|
12400
|
+
`Directives cannot inherit Components. Directive ${stringifyForError(definition.type)} is attempting to extend component ${stringifyForError(superType)}` :
|
|
12376
12401
|
'';
|
|
12377
12402
|
throw new RuntimeError(903 /* INVALID_INHERITANCE */, errorMessage);
|
|
12378
12403
|
}
|
|
@@ -14487,7 +14512,7 @@ function elementStartFirstCreatePass(index, tView, lView, native, name, attrsInd
|
|
|
14487
14512
|
const attrs = getConstant(tViewConsts, attrsIndex);
|
|
14488
14513
|
const tNode = getOrCreateTNode(tView, index, 2 /* Element */, name, attrs);
|
|
14489
14514
|
const hasDirectives = resolveDirectives(tView, lView, tNode, getConstant(tViewConsts, localRefsIndex));
|
|
14490
|
-
ngDevMode &&
|
|
14515
|
+
ngDevMode && validateElementIsKnown(native, tNode.value, tView.schemas, hasDirectives);
|
|
14491
14516
|
if (tNode.attrs !== null) {
|
|
14492
14517
|
computeStaticStyling(tNode, tNode.attrs, false);
|
|
14493
14518
|
}
|
|
@@ -14611,18 +14636,33 @@ function ɵɵelement(index, name, attrsIndex, localRefsIndex) {
|
|
|
14611
14636
|
ɵɵelementEnd();
|
|
14612
14637
|
return ɵɵelement;
|
|
14613
14638
|
}
|
|
14614
|
-
|
|
14615
|
-
|
|
14639
|
+
/**
|
|
14640
|
+
* Validates that the element is known at runtime and produces
|
|
14641
|
+
* an error if it's not the case.
|
|
14642
|
+
* This check is relevant for JIT-compiled components (for AOT-compiled
|
|
14643
|
+
* ones this check happens at build time).
|
|
14644
|
+
*
|
|
14645
|
+
* The element is considered known if either:
|
|
14646
|
+
* - it's a known HTML element
|
|
14647
|
+
* - it's a known custom element
|
|
14648
|
+
* - the element matches any directive
|
|
14649
|
+
* - the element is allowed by one of the schemas
|
|
14650
|
+
*
|
|
14651
|
+
* @param element Element to validate
|
|
14652
|
+
* @param tagName Name of the tag to check
|
|
14653
|
+
* @param schemas Array of schemas
|
|
14654
|
+
* @param hasDirectives Boolean indicating that the element matches any directive
|
|
14655
|
+
*/
|
|
14656
|
+
function validateElementIsKnown(element, tagName, schemas, hasDirectives) {
|
|
14616
14657
|
// If `schemas` is set to `null`, that's an indication that this Component was compiled in AOT
|
|
14617
14658
|
// mode where this check happens at compile time. In JIT mode, `schemas` is always present and
|
|
14618
14659
|
// defined as an array (as an empty array in case `schemas` field is not defined) and we should
|
|
14619
14660
|
// execute the check below.
|
|
14620
14661
|
if (schemas === null)
|
|
14621
14662
|
return;
|
|
14622
|
-
const tagName = tNode.value;
|
|
14623
14663
|
// If the element matches any directive, it's considered as valid.
|
|
14624
14664
|
if (!hasDirectives && tagName !== null) {
|
|
14625
|
-
// The element is unknown if it's an instance of HTMLUnknownElement or it isn't registered
|
|
14665
|
+
// The element is unknown if it's an instance of HTMLUnknownElement, or it isn't registered
|
|
14626
14666
|
// as a custom element. Note that unknown elements with a dash in their name won't be instances
|
|
14627
14667
|
// of HTMLUnknownElement in browsers that support web components.
|
|
14628
14668
|
const isUnknown =
|
|
@@ -14632,7 +14672,7 @@ function logUnknownElementError(tView, element, tNode, hasDirectives) {
|
|
|
14632
14672
|
element instanceof HTMLUnknownElement) ||
|
|
14633
14673
|
(typeof customElements !== 'undefined' && tagName.indexOf('-') > -1 &&
|
|
14634
14674
|
!customElements.get(tagName));
|
|
14635
|
-
if (isUnknown && !matchingSchemas(
|
|
14675
|
+
if (isUnknown && !matchingSchemas(schemas, tagName)) {
|
|
14636
14676
|
let message = `'${tagName}' is not a known element:\n`;
|
|
14637
14677
|
message += `1. If '${tagName}' is an Angular component, then verify that it is part of this module.\n`;
|
|
14638
14678
|
if (tagName && tagName.indexOf('-') > -1) {
|
|
@@ -21102,7 +21142,7 @@ class Version {
|
|
|
21102
21142
|
/**
|
|
21103
21143
|
* @publicApi
|
|
21104
21144
|
*/
|
|
21105
|
-
const VERSION = new Version('13.3.
|
|
21145
|
+
const VERSION = new Version('13.3.4');
|
|
21106
21146
|
|
|
21107
21147
|
/**
|
|
21108
21148
|
* @license
|
|
@@ -24887,7 +24927,10 @@ const PLATFORM_INITIALIZER = new InjectionToken('Platform Initializer');
|
|
|
24887
24927
|
* A token that indicates an opaque platform ID.
|
|
24888
24928
|
* @publicApi
|
|
24889
24929
|
*/
|
|
24890
|
-
const PLATFORM_ID = new InjectionToken('Platform ID'
|
|
24930
|
+
const PLATFORM_ID = new InjectionToken('Platform ID', {
|
|
24931
|
+
providedIn: 'platform',
|
|
24932
|
+
factory: () => 'unknown', // set a default platform name, when none set explicitly
|
|
24933
|
+
});
|
|
24891
24934
|
/**
|
|
24892
24935
|
* A [DI token](guide/glossary#di-token "DI token definition") that provides a set of callbacks to
|
|
24893
24936
|
* be called for every component that is bootstrapped.
|
|
@@ -24925,9 +24968,10 @@ class Console {
|
|
|
24925
24968
|
}
|
|
24926
24969
|
}
|
|
24927
24970
|
Console.ɵfac = function Console_Factory(t) { return new (t || Console)(); };
|
|
24928
|
-
Console.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: Console, factory: Console.ɵfac });
|
|
24971
|
+
Console.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: Console, factory: Console.ɵfac, providedIn: 'platform' });
|
|
24929
24972
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(Console, [{
|
|
24930
|
-
type: Injectable
|
|
24973
|
+
type: Injectable,
|
|
24974
|
+
args: [{ providedIn: 'platform' }]
|
|
24931
24975
|
}], null, null); })();
|
|
24932
24976
|
|
|
24933
24977
|
/**
|
|
@@ -25885,9 +25929,10 @@ class TestabilityRegistry {
|
|
|
25885
25929
|
}
|
|
25886
25930
|
}
|
|
25887
25931
|
TestabilityRegistry.ɵfac = function TestabilityRegistry_Factory(t) { return new (t || TestabilityRegistry)(); };
|
|
25888
|
-
TestabilityRegistry.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: TestabilityRegistry, factory: TestabilityRegistry.ɵfac });
|
|
25932
|
+
TestabilityRegistry.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: TestabilityRegistry, factory: TestabilityRegistry.ɵfac, providedIn: 'platform' });
|
|
25889
25933
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(TestabilityRegistry, [{
|
|
25890
|
-
type: Injectable
|
|
25934
|
+
type: Injectable,
|
|
25935
|
+
args: [{ providedIn: 'platform' }]
|
|
25891
25936
|
}], function () { return []; }, null); })();
|
|
25892
25937
|
class _NoopGetTestability {
|
|
25893
25938
|
addToWindow(registry) { }
|
|
@@ -25911,7 +25956,19 @@ let _testabilityGetter = new _NoopGetTestability();
|
|
|
25911
25956
|
* Use of this source code is governed by an MIT-style license that can be
|
|
25912
25957
|
* found in the LICENSE file at https://angular.io/license
|
|
25913
25958
|
*/
|
|
25914
|
-
let
|
|
25959
|
+
let _platformInjector = null;
|
|
25960
|
+
/**
|
|
25961
|
+
* Internal token to indicate whether having multiple bootstrapped platform should be allowed (only
|
|
25962
|
+
* one bootstrapped platform is allowed by default). This token helps to support SSR scenarios.
|
|
25963
|
+
*/
|
|
25964
|
+
const ALLOW_MULTIPLE_PLATFORMS = new InjectionToken('AllowMultipleToken');
|
|
25965
|
+
/**
|
|
25966
|
+
* Internal token that allows to register extra callbacks that should be invoked during the
|
|
25967
|
+
* `PlatformRef.destroy` operation. This token is needed to avoid a direct reference to the
|
|
25968
|
+
* `PlatformRef` class (i.e. register the callback via `PlatformRef.onDestroy`), thus making the
|
|
25969
|
+
* entire class tree-shakeable.
|
|
25970
|
+
*/
|
|
25971
|
+
const PLATFORM_ON_DESTROY = new InjectionToken('PlatformOnDestroy');
|
|
25915
25972
|
function compileNgModuleFactory(injector, options, moduleType) {
|
|
25916
25973
|
ngDevMode && assertNgModuleType(moduleType);
|
|
25917
25974
|
const moduleFactory = new NgModuleFactory(moduleType);
|
|
@@ -25956,7 +26013,6 @@ function publishDefaultGlobalUtils() {
|
|
|
25956
26013
|
function isBoundToModule(cf) {
|
|
25957
26014
|
return cf.isBoundToModule;
|
|
25958
26015
|
}
|
|
25959
|
-
const ALLOW_MULTIPLE_PLATFORMS = new InjectionToken('AllowMultipleToken');
|
|
25960
26016
|
/**
|
|
25961
26017
|
* A token for third-party components that can register themselves with NgProbe.
|
|
25962
26018
|
*
|
|
@@ -25975,19 +26031,19 @@ class NgProbeToken {
|
|
|
25975
26031
|
* @publicApi
|
|
25976
26032
|
*/
|
|
25977
26033
|
function createPlatform(injector) {
|
|
25978
|
-
if (
|
|
25979
|
-
!_platform.injector.get(ALLOW_MULTIPLE_PLATFORMS, false)) {
|
|
26034
|
+
if (_platformInjector && !_platformInjector.get(ALLOW_MULTIPLE_PLATFORMS, false)) {
|
|
25980
26035
|
const errorMessage = (typeof ngDevMode === 'undefined' || ngDevMode) ?
|
|
25981
26036
|
'There can be only one platform. Destroy the previous one to create a new one.' :
|
|
25982
26037
|
'';
|
|
25983
26038
|
throw new RuntimeError(400 /* MULTIPLE_PLATFORMS */, errorMessage);
|
|
25984
26039
|
}
|
|
25985
26040
|
publishDefaultGlobalUtils();
|
|
25986
|
-
|
|
26041
|
+
_platformInjector = injector;
|
|
26042
|
+
const platform = injector.get(PlatformRef);
|
|
25987
26043
|
const inits = injector.get(PLATFORM_INITIALIZER, null);
|
|
25988
26044
|
if (inits)
|
|
25989
|
-
inits.forEach(
|
|
25990
|
-
return
|
|
26045
|
+
inits.forEach(initFn => initFn());
|
|
26046
|
+
return platform;
|
|
25991
26047
|
}
|
|
25992
26048
|
/**
|
|
25993
26049
|
* Creates a factory for a platform. Can be used to provide or override `Providers` specific to
|
|
@@ -26006,15 +26062,16 @@ function createPlatformFactory(parentPlatformFactory, name, providers = []) {
|
|
|
26006
26062
|
return (extraProviders = []) => {
|
|
26007
26063
|
let platform = getPlatform();
|
|
26008
26064
|
if (!platform || platform.injector.get(ALLOW_MULTIPLE_PLATFORMS, false)) {
|
|
26065
|
+
const platformProviders = [
|
|
26066
|
+
...providers,
|
|
26067
|
+
...extraProviders,
|
|
26068
|
+
{ provide: marker, useValue: true }
|
|
26069
|
+
];
|
|
26009
26070
|
if (parentPlatformFactory) {
|
|
26010
|
-
parentPlatformFactory(
|
|
26071
|
+
parentPlatformFactory(platformProviders);
|
|
26011
26072
|
}
|
|
26012
26073
|
else {
|
|
26013
|
-
|
|
26014
|
-
provide: INJECTOR_SCOPE,
|
|
26015
|
-
useValue: 'platform'
|
|
26016
|
-
});
|
|
26017
|
-
createPlatform(Injector.create({ providers: injectedProviders, name: desc }));
|
|
26074
|
+
createPlatform(createPlatformInjector(platformProviders, desc));
|
|
26018
26075
|
}
|
|
26019
26076
|
}
|
|
26020
26077
|
return assertPlatform(marker);
|
|
@@ -26037,6 +26094,20 @@ function assertPlatform(requiredToken) {
|
|
|
26037
26094
|
}
|
|
26038
26095
|
return platform;
|
|
26039
26096
|
}
|
|
26097
|
+
/**
|
|
26098
|
+
* Helper function to create an instance of a platform injector (that maintains the 'platform'
|
|
26099
|
+
* scope).
|
|
26100
|
+
*/
|
|
26101
|
+
function createPlatformInjector(providers = [], name) {
|
|
26102
|
+
return Injector.create({
|
|
26103
|
+
name,
|
|
26104
|
+
providers: [
|
|
26105
|
+
{ provide: INJECTOR_SCOPE, useValue: 'platform' },
|
|
26106
|
+
{ provide: PLATFORM_ON_DESTROY, useValue: () => _platformInjector = null },
|
|
26107
|
+
...providers
|
|
26108
|
+
],
|
|
26109
|
+
});
|
|
26110
|
+
}
|
|
26040
26111
|
/**
|
|
26041
26112
|
* Destroys the current Angular platform and all Angular applications on the page.
|
|
26042
26113
|
* Destroys all modules and listeners registered with the platform.
|
|
@@ -26044,9 +26115,7 @@ function assertPlatform(requiredToken) {
|
|
|
26044
26115
|
* @publicApi
|
|
26045
26116
|
*/
|
|
26046
26117
|
function destroyPlatform() {
|
|
26047
|
-
|
|
26048
|
-
_platform.destroy();
|
|
26049
|
-
}
|
|
26118
|
+
getPlatform()?.destroy();
|
|
26050
26119
|
}
|
|
26051
26120
|
/**
|
|
26052
26121
|
* Returns the current platform.
|
|
@@ -26054,7 +26123,7 @@ function destroyPlatform() {
|
|
|
26054
26123
|
* @publicApi
|
|
26055
26124
|
*/
|
|
26056
26125
|
function getPlatform() {
|
|
26057
|
-
return
|
|
26126
|
+
return _platformInjector?.get(PlatformRef) ?? null;
|
|
26058
26127
|
}
|
|
26059
26128
|
/**
|
|
26060
26129
|
* The Angular platform is the entry point for Angular on a web page.
|
|
@@ -26192,6 +26261,8 @@ class PlatformRef {
|
|
|
26192
26261
|
}
|
|
26193
26262
|
this._modules.slice().forEach(module => module.destroy());
|
|
26194
26263
|
this._destroyListeners.forEach(listener => listener());
|
|
26264
|
+
const destroyListener = this._injector.get(PLATFORM_ON_DESTROY, null);
|
|
26265
|
+
destroyListener?.();
|
|
26195
26266
|
this._destroyed = true;
|
|
26196
26267
|
}
|
|
26197
26268
|
get destroyed() {
|
|
@@ -26199,9 +26270,10 @@ class PlatformRef {
|
|
|
26199
26270
|
}
|
|
26200
26271
|
}
|
|
26201
26272
|
PlatformRef.ɵfac = function PlatformRef_Factory(t) { return new (t || PlatformRef)(ɵɵinject(Injector)); };
|
|
26202
|
-
PlatformRef.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: PlatformRef, factory: PlatformRef.ɵfac });
|
|
26273
|
+
PlatformRef.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: PlatformRef, factory: PlatformRef.ɵfac, providedIn: 'platform' });
|
|
26203
26274
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(PlatformRef, [{
|
|
26204
|
-
type: Injectable
|
|
26275
|
+
type: Injectable,
|
|
26276
|
+
args: [{ providedIn: 'platform' }]
|
|
26205
26277
|
}], function () { return [{ type: Injector }]; }, null); })();
|
|
26206
26278
|
function getNgZone(ngZoneOption, extra) {
|
|
26207
26279
|
let ngZone;
|
|
@@ -26339,11 +26411,10 @@ function optionsReducer(dst, objs) {
|
|
|
26339
26411
|
*/
|
|
26340
26412
|
class ApplicationRef {
|
|
26341
26413
|
/** @internal */
|
|
26342
|
-
constructor(_zone, _injector, _exceptionHandler,
|
|
26414
|
+
constructor(_zone, _injector, _exceptionHandler, _initStatus) {
|
|
26343
26415
|
this._zone = _zone;
|
|
26344
26416
|
this._injector = _injector;
|
|
26345
26417
|
this._exceptionHandler = _exceptionHandler;
|
|
26346
|
-
this._componentFactoryResolver = _componentFactoryResolver;
|
|
26347
26418
|
this._initStatus = _initStatus;
|
|
26348
26419
|
/** @internal */
|
|
26349
26420
|
this._bootstrapListeners = [];
|
|
@@ -26459,8 +26530,8 @@ class ApplicationRef {
|
|
|
26459
26530
|
componentFactory = componentOrFactory;
|
|
26460
26531
|
}
|
|
26461
26532
|
else {
|
|
26462
|
-
|
|
26463
|
-
|
|
26533
|
+
const resolver = this._injector.get(ComponentFactoryResolver$1);
|
|
26534
|
+
componentFactory = resolver.resolveComponentFactory(componentOrFactory);
|
|
26464
26535
|
}
|
|
26465
26536
|
this.componentTypes.push(componentFactory.componentType);
|
|
26466
26537
|
// Create a factory associated with the current module if it's not bound to some other
|
|
@@ -26561,12 +26632,12 @@ class ApplicationRef {
|
|
|
26561
26632
|
return this._views.length;
|
|
26562
26633
|
}
|
|
26563
26634
|
}
|
|
26564
|
-
ApplicationRef.ɵfac = function ApplicationRef_Factory(t) { return new (t || ApplicationRef)(ɵɵinject(NgZone), ɵɵinject(Injector), ɵɵinject(ErrorHandler), ɵɵinject(
|
|
26635
|
+
ApplicationRef.ɵfac = function ApplicationRef_Factory(t) { return new (t || ApplicationRef)(ɵɵinject(NgZone), ɵɵinject(Injector), ɵɵinject(ErrorHandler), ɵɵinject(ApplicationInitStatus)); };
|
|
26565
26636
|
ApplicationRef.ɵprov = /*@__PURE__*/ ɵɵdefineInjectable({ token: ApplicationRef, factory: ApplicationRef.ɵfac, providedIn: 'root' });
|
|
26566
26637
|
(function () { (typeof ngDevMode === "undefined" || ngDevMode) && setClassMetadata(ApplicationRef, [{
|
|
26567
26638
|
type: Injectable,
|
|
26568
26639
|
args: [{ providedIn: 'root' }]
|
|
26569
|
-
}], function () { return [{ type: NgZone }, { type: Injector }, { type: ErrorHandler }, { type:
|
|
26640
|
+
}], function () { return [{ type: NgZone }, { type: Injector }, { type: ErrorHandler }, { type: ApplicationInitStatus }]; }, null); })();
|
|
26570
26641
|
function remove(list, el) {
|
|
26571
26642
|
const index = list.indexOf(el);
|
|
26572
26643
|
if (index > -1) {
|
|
@@ -28548,19 +28619,12 @@ const defaultKeyValueDiffers = new KeyValueDiffers(keyValDiff);
|
|
|
28548
28619
|
* Use of this source code is governed by an MIT-style license that can be
|
|
28549
28620
|
* found in the LICENSE file at https://angular.io/license
|
|
28550
28621
|
*/
|
|
28551
|
-
const _CORE_PLATFORM_PROVIDERS = [
|
|
28552
|
-
// Set a default platform name for platforms that don't set it explicitly.
|
|
28553
|
-
{ provide: PLATFORM_ID, useValue: 'unknown' },
|
|
28554
|
-
{ provide: PlatformRef, deps: [Injector] },
|
|
28555
|
-
{ provide: TestabilityRegistry, deps: [] },
|
|
28556
|
-
{ provide: Console, deps: [] },
|
|
28557
|
-
];
|
|
28558
28622
|
/**
|
|
28559
28623
|
* This platform has to be included in any other platform
|
|
28560
28624
|
*
|
|
28561
28625
|
* @publicApi
|
|
28562
28626
|
*/
|
|
28563
|
-
const platformCore = createPlatformFactory(null, 'core',
|
|
28627
|
+
const platformCore = createPlatformFactory(null, 'core', []);
|
|
28564
28628
|
|
|
28565
28629
|
/**
|
|
28566
28630
|
* @license
|