Sitelet https://github.com/angular/angular/commit/6298b30f4e0c4fa04df23d8bbead3bab31a7bc55
Skip to content

Commit 6298b30

Browse files
splincodeNothingEverHappens
authored andcommitted
refactor(platform-browser): type async animation renderer
Replace unsafe renderer casts with an internal helper that updates the synthetic properties flag without exposing the concrete DOM renderer type. (cherry picked from commit 124f421)
1 parent 6cd3a8a commit 6298b30

3 files changed

Lines changed: 15 additions & 5 deletions

File tree

‎packages/platform-browser/animations/async/src/async_animation_renderer.ts‎

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,10 @@ import {
2828
ɵRuntimeError as RuntimeError,
2929
type ListenerOptions,
3030
} from '@angular/core';
31-
import {ɵRuntimeErrorCode as RuntimeErrorCode} from '../../../index';
31+
import {
32+
ɵdisableThrowOnSyntheticProps as disableThrowOnSyntheticProps,
33+
ɵRuntimeErrorCode as RuntimeErrorCode,
34+
} from '../../../index';
3235

3336
const ANIMATION_PREFIX = '@';
3437

@@ -125,9 +128,7 @@ export class AsyncAnimationRendererFactory implements OnDestroy, RendererFactory
125128
}
126129

127130
// We need to prevent the DomRenderer to throw an error because of synthetic properties
128-
if (typeof (renderer as any).throwOnSyntheticProps === 'boolean') {
129-
(renderer as any).throwOnSyntheticProps = false;
130-
}
131+
disableThrowOnSyntheticProps(renderer);
131132

132133
// Using a dynamic renderer to switch the renderer implementation once the module is loaded.
133134
const dynamicRenderer = new DynamicDelegationRenderer(renderer);

‎packages/platform-browser/src/dom/dom_renderer.ts‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -538,6 +538,12 @@ class DefaultDomRenderer2 implements Renderer2 {
538538
}
539539
}
540540

541+
export function disableThrowOnSyntheticProps(renderer: Renderer2): void {
542+
if (renderer instanceof DefaultDomRenderer2) {
543+
renderer.throwOnSyntheticProps = false;
544+
}
545+
}
546+
541547
const AT_CHARCODE = (() => '@'.charCodeAt(0))();
542548

543549
function checkNoSyntheticProp(name: string, nameKind: string) {

‎packages/platform-browser/src/private_export.ts‎

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,10 @@
99
export {ɵgetDOM} from '@angular/common';
1010
export {BrowserDomAdapter as ɵBrowserDomAdapter} from './browser/browser_adapter';
1111
export {BrowserGetTestability as ɵBrowserGetTestability} from './browser/testability';
12-
export {DomRendererFactory2 as ɵDomRendererFactory2} from './dom/dom_renderer';
12+
export {
13+
disableThrowOnSyntheticProps as ɵdisableThrowOnSyntheticProps,
14+
DomRendererFactory2 as ɵDomRendererFactory2,
15+
} from './dom/dom_renderer';
1316
export {DomEventsPlugin as ɵDomEventsPlugin} from './dom/events/dom_events';
1417
export {KeyEventsPlugin as ɵKeyEventsPlugin} from './dom/events/key_events';
1518
export {SharedStylesHost as ɵSharedStylesHost} from './dom/shared_styles_host';

0 commit comments

Comments
 (0)