@angular/core 13.3.3 → 13.3.6

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.
@@ -21,5 +21,5 @@ export class Version {
21
21
  /**
22
22
  * @publicApi
23
23
  */
24
- export const VERSION = new Version('13.3.3');
24
+ export const VERSION = new Version('13.3.6');
25
25
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVyc2lvbi5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL2NvcmUvc3JjL3ZlcnNpb24udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUg7Ozs7R0FJRztBQUNILE1BQU0sT0FBTyxPQUFPO0lBS2xCLFlBQW1CLElBQVk7UUFBWixTQUFJLEdBQUosSUFBSSxDQUFRO1FBQzdCLElBQUksQ0FBQyxLQUFLLEdBQUcsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNoQyxJQUFJLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDaEMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7SUFDbEQsQ0FBQztDQUNGO0FBRUQ7O0dBRUc7QUFDSCxNQUFNLENBQUMsTUFBTSxPQUFPLEdBQUcsSUFBSSxPQUFPLENBQUMsbUJBQW1CLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBSZXByZXNlbnRzIHRoZSB2ZXJzaW9uIG9mIEFuZ3VsYXJcbiAqXG4gKiBAcHVibGljQXBpXG4gKi9cbmV4cG9ydCBjbGFzcyBWZXJzaW9uIHtcbiAgcHVibGljIHJlYWRvbmx5IG1ham9yOiBzdHJpbmc7XG4gIHB1YmxpYyByZWFkb25seSBtaW5vcjogc3RyaW5nO1xuICBwdWJsaWMgcmVhZG9ubHkgcGF0Y2g6IHN0cmluZztcblxuICBjb25zdHJ1Y3RvcihwdWJsaWMgZnVsbDogc3RyaW5nKSB7XG4gICAgdGhpcy5tYWpvciA9IGZ1bGwuc3BsaXQoJy4nKVswXTtcbiAgICB0aGlzLm1pbm9yID0gZnVsbC5zcGxpdCgnLicpWzFdO1xuICAgIHRoaXMucGF0Y2ggPSBmdWxsLnNwbGl0KCcuJykuc2xpY2UoMikuam9pbignLicpO1xuICB9XG59XG5cbi8qKlxuICogQHB1YmxpY0FwaVxuICovXG5leHBvcnQgY29uc3QgVkVSU0lPTiA9IG5ldyBWZXJzaW9uKCcwLjAuMC1QTEFDRUhPTERFUicpO1xuIl19
@@ -26,9 +26,9 @@ export class Log {
26
26
  return this.logItems.join('; ');
27
27
  }
28
28
  }
29
- Log.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: Log, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
30
- Log.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: Log });
31
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: Log, decorators: [{
29
+ Log.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.6", ngImport: i0, type: Log, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
30
+ Log.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.6", ngImport: i0, type: Log });
31
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.6", ngImport: i0, type: Log, decorators: [{
32
32
  type: Injectable
33
33
  }], ctorParameters: function () { return []; } });
34
34
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS90ZXN0aW5nL3NyYy9sb2dnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFDLFVBQVUsRUFBQyxNQUFNLGVBQWUsQ0FBQzs7QUFHekMsTUFBTSxPQUFPLEdBQUc7SUFHZDtRQUNFLElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDO0lBQ3JCLENBQUM7SUFFRCxHQUFHLENBQUMsS0FBVSxDQUFDLGlCQUFpQjtRQUM5QixJQUFJLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1QixDQUFDO0lBRUQsRUFBRSxDQUFDLEtBQVUsQ0FBQyxpQkFBaUI7UUFDN0IsT0FBTyxDQUFDLEtBQVUsSUFBSSxFQUFFLEtBQVUsSUFBSSxFQUFFLEtBQVUsSUFBSSxFQUFFLEtBQVUsSUFBSSxFQUFFLEtBQVUsSUFBSSxFQUFFLEVBQUU7WUFDeEYsSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDNUIsQ0FBQyxDQUFDO0lBQ0osQ0FBQztJQUVELEtBQUs7UUFDSCxJQUFJLENBQUMsUUFBUSxHQUFHLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsTUFBTTtRQUNKLE9BQU8sSUFBSSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDbEMsQ0FBQzs7MkdBdkJVLEdBQUc7K0dBQUgsR0FBRztzR0FBSCxHQUFHO2tCQURmLFVBQVUiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEBsaWNlbnNlXG4gKiBDb3B5cmlnaHQgR29vZ2xlIExMQyBBbGwgUmlnaHRzIFJlc2VydmVkLlxuICpcbiAqIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGFuIE1JVC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlXG4gKiBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlIGF0IGh0dHBzOi8vYW5ndWxhci5pby9saWNlbnNlXG4gKi9cblxuaW1wb3J0IHtJbmplY3RhYmxlfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIExvZyB7XG4gIGxvZ0l0ZW1zOiBhbnlbXTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICB0aGlzLmxvZ0l0ZW1zID0gW107XG4gIH1cblxuICBhZGQodmFsdWU6IGFueSAvKiogVE9ETyAjOTEwMCAqLyk6IHZvaWQge1xuICAgIHRoaXMubG9nSXRlbXMucHVzaCh2YWx1ZSk7XG4gIH1cblxuICBmbih2YWx1ZTogYW55IC8qKiBUT0RPICM5MTAwICovKSB7XG4gICAgcmV0dXJuIChhMTogYW55ID0gbnVsbCwgYTI6IGFueSA9IG51bGwsIGEzOiBhbnkgPSBudWxsLCBhNDogYW55ID0gbnVsbCwgYTU6IGFueSA9IG51bGwpID0+IHtcbiAgICAgIHRoaXMubG9nSXRlbXMucHVzaCh2YWx1ZSk7XG4gICAgfTtcbiAgfVxuXG4gIGNsZWFyKCk6IHZvaWQge1xuICAgIHRoaXMubG9nSXRlbXMgPSBbXTtcbiAgfVxuXG4gIHJlc3VsdCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLmxvZ0l0ZW1zLmpvaW4oJzsgJyk7XG4gIH1cbn1cbiJdfQ==
@@ -25,9 +25,9 @@ export class MockNgZone extends NgZone {
25
25
  this.onStable.emit(null);
26
26
  }
27
27
  }
28
- MockNgZone.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: MockNgZone, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
29
- MockNgZone.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: MockNgZone });
30
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.3", ngImport: i0, type: MockNgZone, decorators: [{
28
+ MockNgZone.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "13.3.6", ngImport: i0, type: MockNgZone, deps: [], target: i0.ɵɵFactoryTarget.Injectable });
29
+ MockNgZone.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "13.3.6", ngImport: i0, type: MockNgZone });
30
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "13.3.6", ngImport: i0, type: MockNgZone, decorators: [{
31
31
  type: Injectable
32
32
  }], ctorParameters: function () { return []; } });
33
33
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmdfem9uZV9tb2NrLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvY29yZS90ZXN0aW5nL3NyYy9uZ196b25lX21vY2sudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7OztHQU1HO0FBRUgsT0FBTyxFQUFDLFlBQVksRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFDLE1BQU0sZUFBZSxDQUFDOztBQUcvRDs7R0FFRztBQUVILE1BQU0sT0FBTyxVQUFXLFNBQVEsTUFBTTtJQUdwQztRQUNFLEtBQUssQ0FBQyxFQUFDLG9CQUFvQixFQUFFLEtBQUssRUFBRSxrQ0FBa0MsRUFBRSxLQUFLLEVBQUMsQ0FBQyxDQUFDO1FBSHpFLGFBQVEsR0FBc0IsSUFBSSxZQUFZLENBQUMsS0FBSyxDQUFDLENBQUM7SUFJL0QsQ0FBQztJQUVRLEdBQUcsQ0FBQyxFQUFZO1FBQ3ZCLE9BQU8sRUFBRSxFQUFFLENBQUM7SUFDZCxDQUFDO0lBRVEsaUJBQWlCLENBQUMsRUFBWTtRQUNyQyxPQUFPLEVBQUUsRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUVELGdCQUFnQjtRQUNkLElBQUksQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzNCLENBQUM7O2tIQWpCVSxVQUFVO3NIQUFWLFVBQVU7c0dBQVYsVUFBVTtrQkFEdEIsVUFBVSIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQGxpY2Vuc2VcbiAqIENvcHlyaWdodCBHb29nbGUgTExDIEFsbCBSaWdodHMgUmVzZXJ2ZWQuXG4gKlxuICogVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYW4gTUlULXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmVcbiAqIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUgYXQgaHR0cHM6Ly9hbmd1bGFyLmlvL2xpY2Vuc2VcbiAqL1xuXG5pbXBvcnQge0V2ZW50RW1pdHRlciwgSW5qZWN0YWJsZSwgTmdab25lfSBmcm9tICdAYW5ndWxhci9jb3JlJztcblxuXG4vKipcbiAqIEEgbW9jayBpbXBsZW1lbnRhdGlvbiBvZiB7QGxpbmsgTmdab25lfS5cbiAqL1xuQEluamVjdGFibGUoKVxuZXhwb3J0IGNsYXNzIE1vY2tOZ1pvbmUgZXh0ZW5kcyBOZ1pvbmUge1xuICBvdmVycmlkZSBvblN0YWJsZTogRXZlbnRFbWl0dGVyPGFueT4gPSBuZXcgRXZlbnRFbWl0dGVyKGZhbHNlKTtcblxuICBjb25zdHJ1Y3RvcigpIHtcbiAgICBzdXBlcih7ZW5hYmxlTG9uZ1N0YWNrVHJhY2U6IGZhbHNlLCBzaG91bGRDb2FsZXNjZUV2ZW50Q2hhbmdlRGV0ZWN0aW9uOiBmYWxzZX0pO1xuICB9XG5cbiAgb3ZlcnJpZGUgcnVuKGZuOiBGdW5jdGlvbik6IGFueSB7XG4gICAgcmV0dXJuIGZuKCk7XG4gIH1cblxuICBvdmVycmlkZSBydW5PdXRzaWRlQW5ndWxhcihmbjogRnVuY3Rpb24pOiBhbnkge1xuICAgIHJldHVybiBmbigpO1xuICB9XG5cbiAgc2ltdWxhdGVab25lRXhpdCgpOiB2b2lkIHtcbiAgICB0aGlzLm9uU3RhYmxlLmVtaXQobnVsbCk7XG4gIH1cbn1cbiJdfQ==
package/fesm2015/core.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  /**
2
- * @license Angular v13.3.3
2
+ * @license Angular v13.3.6
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) {
@@ -10378,8 +10380,11 @@ function findDirectiveDefMatches(tView, viewData, tNode) {
10378
10380
  if (ngDevMode) {
10379
10381
  assertTNodeType(tNode, 2 /* Element */, `"${tNode.value}" tags cannot be used as component hosts. ` +
10380
10382
  `Please use a different tag to activate the ${stringify(def.type)} component.`);
10381
- if (tNode.flags & 2 /* isComponentHost */)
10382
- throwMultipleComponentError(tNode);
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
+ }
10383
10388
  }
10384
10389
  markAsComponentHost(tView, tNode);
10385
10390
  // The component is always stored first with directives after.
@@ -12378,7 +12383,7 @@ function ɵɵInheritDefinitionFeature(definition) {
12378
12383
  else {
12379
12384
  if (superType.ɵcmp) {
12380
12385
  const errorMessage = (typeof ngDevMode === 'undefined' || ngDevMode) ?
12381
- 'Directives cannot inherit Components' :
12386
+ `Directives cannot inherit Components. Directive ${stringifyForError(definition.type)} is attempting to extend component ${stringifyForError(superType)}` :
12382
12387
  '';
12383
12388
  throw new RuntimeError(903 /* INVALID_INHERITANCE */, errorMessage);
12384
12389
  }
@@ -21123,7 +21128,7 @@ class Version {
21123
21128
  /**
21124
21129
  * @publicApi
21125
21130
  */
21126
- const VERSION = new Version('13.3.3');
21131
+ const VERSION = new Version('13.3.6');
21127
21132
 
21128
21133
  /**
21129
21134
  * @license
@@ -25929,7 +25934,19 @@ let _testabilityGetter = new _NoopGetTestability();
25929
25934
  * Use of this source code is governed by an MIT-style license that can be
25930
25935
  * found in the LICENSE file at https://angular.io/license
25931
25936
  */
25932
- let _platform;
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');
25933
25950
  function compileNgModuleFactory(injector, options, moduleType) {
25934
25951
  ngDevMode && assertNgModuleType(moduleType);
25935
25952
  const moduleFactory = new NgModuleFactory(moduleType);
@@ -25974,7 +25991,6 @@ function publishDefaultGlobalUtils() {
25974
25991
  function isBoundToModule(cf) {
25975
25992
  return cf.isBoundToModule;
25976
25993
  }
25977
- const ALLOW_MULTIPLE_PLATFORMS = new InjectionToken('AllowMultipleToken');
25978
25994
  /**
25979
25995
  * A token for third-party components that can register themselves with NgProbe.
25980
25996
  *
@@ -25993,19 +26009,19 @@ class NgProbeToken {
25993
26009
  * @publicApi
25994
26010
  */
25995
26011
  function createPlatform(injector) {
25996
- if (_platform && !_platform.destroyed &&
25997
- !_platform.injector.get(ALLOW_MULTIPLE_PLATFORMS, false)) {
26012
+ if (_platformInjector && !_platformInjector.get(ALLOW_MULTIPLE_PLATFORMS, false)) {
25998
26013
  const errorMessage = (typeof ngDevMode === 'undefined' || ngDevMode) ?
25999
26014
  'There can be only one platform. Destroy the previous one to create a new one.' :
26000
26015
  '';
26001
26016
  throw new RuntimeError(400 /* MULTIPLE_PLATFORMS */, errorMessage);
26002
26017
  }
26003
26018
  publishDefaultGlobalUtils();
26004
- _platform = injector.get(PlatformRef);
26019
+ _platformInjector = injector;
26020
+ const platform = injector.get(PlatformRef);
26005
26021
  const inits = injector.get(PLATFORM_INITIALIZER, null);
26006
26022
  if (inits)
26007
- inits.forEach((init) => init());
26008
- return _platform;
26023
+ inits.forEach(initFn => initFn());
26024
+ return platform;
26009
26025
  }
26010
26026
  /**
26011
26027
  * Creates a factory for a platform. Can be used to provide or override `Providers` specific to
@@ -26024,15 +26040,16 @@ function createPlatformFactory(parentPlatformFactory, name, providers = []) {
26024
26040
  return (extraProviders = []) => {
26025
26041
  let platform = getPlatform();
26026
26042
  if (!platform || platform.injector.get(ALLOW_MULTIPLE_PLATFORMS, false)) {
26043
+ const platformProviders = [
26044
+ ...providers,
26045
+ ...extraProviders,
26046
+ { provide: marker, useValue: true }
26047
+ ];
26027
26048
  if (parentPlatformFactory) {
26028
- parentPlatformFactory(providers.concat(extraProviders).concat({ provide: marker, useValue: true }));
26049
+ parentPlatformFactory(platformProviders);
26029
26050
  }
26030
26051
  else {
26031
- const injectedProviders = providers.concat(extraProviders).concat({ provide: marker, useValue: true }, {
26032
- provide: INJECTOR_SCOPE,
26033
- useValue: 'platform'
26034
- });
26035
- createPlatform(Injector.create({ providers: injectedProviders, name: desc }));
26052
+ createPlatform(createPlatformInjector(platformProviders, desc));
26036
26053
  }
26037
26054
  }
26038
26055
  return assertPlatform(marker);
@@ -26055,6 +26072,20 @@ function assertPlatform(requiredToken) {
26055
26072
  }
26056
26073
  return platform;
26057
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
+ }
26058
26089
  /**
26059
26090
  * Destroys the current Angular platform and all Angular applications on the page.
26060
26091
  * Destroys all modules and listeners registered with the platform.
@@ -26062,9 +26093,8 @@ function assertPlatform(requiredToken) {
26062
26093
  * @publicApi
26063
26094
  */
26064
26095
  function destroyPlatform() {
26065
- if (_platform && !_platform.destroyed) {
26066
- _platform.destroy();
26067
- }
26096
+ var _a;
26097
+ (_a = getPlatform()) === null || _a === void 0 ? void 0 : _a.destroy();
26068
26098
  }
26069
26099
  /**
26070
26100
  * Returns the current platform.
@@ -26072,7 +26102,8 @@ function destroyPlatform() {
26072
26102
  * @publicApi
26073
26103
  */
26074
26104
  function getPlatform() {
26075
- return _platform && !_platform.destroyed ? _platform : null;
26105
+ var _a;
26106
+ return (_a = _platformInjector === null || _platformInjector === void 0 ? void 0 : _platformInjector.get(PlatformRef)) !== null && _a !== void 0 ? _a : null;
26076
26107
  }
26077
26108
  /**
26078
26109
  * The Angular platform is the entry point for Angular on a web page.
@@ -26210,6 +26241,8 @@ class PlatformRef {
26210
26241
  }
26211
26242
  this._modules.slice().forEach(module => module.destroy());
26212
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();
26213
26246
  this._destroyed = true;
26214
26247
  }
26215
26248
  get destroyed() {