Skip to content

Upgrading @angular/compiler 16 to 17

Breaking16.2.12 → 17.3.12Breaking22Platform7Deprecated9New65Changed24Fixed300Other3

BreakingUpgrade verdict

19 breaking changes and 7 platform requirement changes.

  • The mutate method on signals is gone; use update with immutable changes instead.
  • Two old compiler options are gone; code setting them must stop.
  • The mutate function is no longer part of the public signals API.
  • Removes the `withNoDomReuse` function.
Top 5 of 34 that need code or config changes

Node.js requirement changed in 17.0.0-rc.2: ^16.14.0 || >=18.10.0 → ^18.13.0 || >=20.9.0.

Breaking19
Removes the mutate method from the WritableSignal interface and public API.
WritableSignalmutateupdate
Removes deprecated CompilerOptions.useJit and CompilerOptions.missingTranslation.
CompilerOptions.useJitCompilerOptions.missingTranslation
Drops the mutate function from the signals public API.
mutate
Removes the withNoDomReuse function.
withNoDomReuse
Removes urlHandlingStrategy from public Router properties.
RouterurlHandlingStrategy
Removes deprecated Router properties.
Router
Removes the deprecated setupTestingRouter function.
setupTestingRouter
Removes malformedUriErrorHandler from ExtraOptions.
ExtraOptionsmalformedUriErrorHandler
NgSwitch now defaults to the === equality operator instead of ==.
NgSwitch
REMOVE_STYLES_ON_COMPONENT_DESTROY now defaults to true, removing component CSS from the DOM on destroy.
REMOVE_STYLES_ON_COMPONENT_DESTROY
Removes withNoDomReuse() from the public API; disable hydration by excluding provideClientHydration() or using ngSkipHydration.
withNoDomReuse()provideClientHydration()ngSkipHydration
Absolute redirects no longer prevent further redirects, so route configs may need adjustment to avoid infinite redirects.
Routes with loadComponent no longer cause child routes to inherit data by default; set paramsInheritanceStrategy to always to inherit.
loadComponentparamsInheritanceStrategy
Removes urlHandlingStrategy from the Router public API; configure it via provideRouter or RouterModule.forRoot.
urlHandlingStrategyprovideRouterRouterModule.forRoot
Removes Router properties canceledNavigationResolution, paramsInheritanceStrategy, titleStrategy, urlUpdateStrategy and malformedUriErrorHandler from the public API.
canceledNavigationResolutionparamsInheritanceStrategytitleStrategyurlUpdateStrategymalformedUriErrorHandlerprovideRouterRouterModule.forRoot
malformedUriErrorHandler is no longer a RouterModule.forRoot option; handle URL parse errors in UrlSerializer.parse.
malformedUriErrorHandlerRouterModule.forRootUrlSerializer.parse
Dynamically created OnPush components now refresh host bindings and run ngDoCheck only when dirty.
OnPushngDoCheckComponentRefmarkForCheckdetectChangesChangeDetectorRef
Removes setupTestingRouter; use RouterModule.forRoot or provideRouter to set up the Router for tests.
setupTestingRouterRouterModule.forRootprovideRouterRouter
Disallows deep and legacy zone.js dist/ imports; zone-testing-bundle and zone-testing-node-bundle are no longer part of the package.
zone.js/bundles/zone-testing.jszone.js/dist/zonezone-testing-bundlezone-testing-node-bundlezone.jszone.js/testing
Platform7
Adds support for TypeScript 5.4.
Supports TypeScript 5.3.
Removes support for Node.js v16.
Drops support for older TypeScript versions.
TypeScript
Supports TypeScript 5.2.
Removes Node.js v16 support and bumps the minimum to 18.13.0.
Drops support for TypeScript versions older than 5.2.
TypeScript
Deprecated8
Deprecates AnimationDriver.NOOP.
AnimationDriver.NOOP
Deprecates NgProbeToken, which is unused since the move from View Engine to Ivy and can be removed.
NgProbeToken
Deprecates ChangeDetectorRef.checkNoChanges.
ChangeDetectorRef.checkNoChanges
Deprecates allowing the full context object to be replaced in EmbeddedViewRef.
EmbeddedViewRef
Deprecates the NgProbeToken.
NgProbeToken
Deprecates the AnimationDriver.NOOP symbol in favor of NoopAnimationDriver.
AnimationDriver.NOOPNoopAnimationDriver
Deprecates ChangeDetectorRef.checkNoChanges; tests should use ComponentFixture and app code should not call it.
ChangeDetectorRef.checkNoChangesComponentFixtureChangeDetectorRef
Stops supporting swapping the context object for EmbeddedViewRef and adds a warning for the deprecated pattern.
EmbeddedViewRefObject.assignProxyNgTemplateOutlet

Generated by DepDelta from published .d.ts files. Not mixed with prose notes.

  • removed: class BlockGroup implements BaseNode
  • removed: class _ParseAST
  • removed: constructor BlockGroup(blocks: Block[], sourceSpan: ParseSourceSpan, startSourceSpan: ParseSourceSpan, endSourceSpan?: ParseSourceSpan | null)
  • removed: constructor _ParseAST(input: string, location: string, absoluteOffset: number, tokens: Token[], parseFlags: ParseFlags, errors: ParserError[], offset: number)
  • removed: get _ParseAST.atEOF(): boolean
  • removed: get _ParseAST.currentAbsoluteOffset(): number
  • removed: get _ParseAST.currentEndIndex(): number
  • removed: get _ParseAST.inputIndex(): number
  • removed: get _ParseAST.next(): Token
  • removed: interface DeferBlockTemplateDependency
  • removed: member ParseFlags.AssignmentEvent = 2
  • removed: method BlockGroup.visit(visitor: Visitor, context: any): any
  • removed: method BoundTarget.getEntitiesInTemplateScope(template: TmplAstTemplate | null): ReadonlySet<TmplAstReference | TmplAstVariable>
  • removed: method BoundTarget.getTemplateOfSymbol(symbol: TmplAstReference | TmplAstVariable): TmplAstTemplate | null
  • removed: method R3BoundTarget.getEntitiesInTemplateScope(template: TmplAstTemplate | null): ReadonlySet<TmplAstReference | TmplAstVariable>
  • removed: method R3BoundTarget.getTemplateOfSymbol(symbol: TmplAstReference | TmplAstVariable): TmplAstTemplate | null
  • removed: method RecursiveVisitor.visitBlockGroup(ast: BlockGroup, context: any): any
  • removed: method Visitor.visitBlockGroup(group: BlockGroup, context: any): any
  • removed: method _ParseAST.advance(): void
  • removed: method _ParseAST.consumeOptionalCharacter(code: number): boolean
  • removed: method _ParseAST.consumeOptionalOperator(op: string): boolean
  • removed: method _ParseAST.error(message: string, index?: number | null): void
  • removed: method _ParseAST.expectCharacter(code: number): void
  • removed: method _ParseAST.expectIdentifierOrKeyword(): string | null
  • removed: method _ParseAST.expectIdentifierOrKeywordOrString(): string
  • removed: method _ParseAST.expectOperator(operator: string): void
  • removed: method _ParseAST.expectTemplateBindingKey(): TemplateBindingIdentifier
  • removed: method _ParseAST.parseAccessMember(readReceiver: AST, start: number, isSafe: boolean): AST
  • removed: method _ParseAST.parseAdditive(): AST
  • removed: method _ParseAST.parseCall(receiver: AST, start: number, isSafe: boolean): AST
  • removed: method _ParseAST.parseCallArguments(): BindingPipe[]
  • removed: method _ParseAST.parseCallChain(): AST
  • removed: method _ParseAST.parseChain(): AST
  • removed: method _ParseAST.parseConditional(): AST
  • removed: method _ParseAST.parseEquality(): AST
  • removed: method _ParseAST.parseExpression(): AST
  • removed: method _ParseAST.parseExpressionList(terminator: number): AST[]
  • removed: method _ParseAST.parseKeyedReadOrWrite(receiver: AST, start: number, isSafe: boolean): AST
  • removed: method _ParseAST.parseLiteralMap(): LiteralMap
  • removed: method _ParseAST.parseLogicalAnd(): AST
  • removed: method _ParseAST.parseLogicalOr(): AST
  • removed: method _ParseAST.parseMultiplicative(): AST
  • removed: method _ParseAST.parseNullishCoalescing(): AST
  • removed: method _ParseAST.parsePipe(): AST
  • removed: method _ParseAST.parsePrefix(): AST
  • removed: method _ParseAST.parsePrimary(): AST
  • removed: method _ParseAST.parseRelational(): AST
  • removed: method _ParseAST.parseTemplateBindings(templateKey: TemplateBindingIdentifier): TemplateBindingParseResult
  • removed: method _ParseAST.peek(offset: number): Token
  • removed: method _ParseAST.peekKeywordAs(): boolean
  • removed: method _ParseAST.peekKeywordLet(): boolean
  • removed: method _ParseAST.prettyPrintToken(tok: Token): string
  • removed: method _ParseAST.sourceSpan(start: number, artificialEndIndex?: number): AbsoluteSourceSpan
  • removed: method _ParseAST.span(start: number, artificialEndIndex?: number): ParseSpan
  • removed: property Block.sourceSpan: ParseSourceSpan
  • removed: property BlockGroup.blocks: Block[]
  • removed: property BlockGroup.endSourceSpan: ParseSourceSpan | null
  • removed: property BlockGroup.sourceSpan: ParseSourceSpan
  • removed: property BlockGroup.startSourceSpan: ParseSourceSpan
  • removed: property CompilerConfig.missingTranslation: MissingTranslationStrategy | null
  • removed: property CompilerConfig.useJit: boolean
  • removed: property DeferBlockTemplateDependency.importPath: string | null
  • removed: property DeferBlockTemplateDependency.isDeferrable: boolean
  • removed: property DeferBlockTemplateDependency.symbolName: string
  • removed: property DeferBlockTemplateDependency.type: outputAst.WrappedNodeExpr<unknown>
  • removed: property ParseTemplateOptions.enabledBlockTypes?: Set<string>
  • removed: property TmplAstDeferredBlock.endSourceSpan: ParseSourceSpan | null
  • removed: property TmplAstDeferredBlock.sourceSpan: ParseSourceSpan
  • removed: property TmplAstDeferredBlock.startSourceSpan: ParseSourceSpan
  • removed: property TmplAstDeferredBlockError.endSourceSpan: ParseSourceSpan | null
  • removed: property TmplAstDeferredBlockError.sourceSpan: ParseSourceSpan
  • removed: property TmplAstDeferredBlockError.startSourceSpan: ParseSourceSpan
  • removed: property TmplAstDeferredBlockLoading.endSourceSpan: ParseSourceSpan | null
  • removed: property TmplAstDeferredBlockLoading.sourceSpan: ParseSourceSpan
  • removed: property TmplAstDeferredBlockLoading.startSourceSpan: ParseSourceSpan
  • removed: property TmplAstDeferredBlockPlaceholder.endSourceSpan: ParseSourceSpan | null
  • removed: property TmplAstDeferredBlockPlaceholder.sourceSpan: ParseSourceSpan
  • removed: property TmplAstDeferredBlockPlaceholder.startSourceSpan: ParseSourceSpan
  • removed: property _ParseAST.absoluteOffset: number
  • removed: property _ParseAST.index: number
  • removed: property _ParseAST.input: string
  • removed: property _ParseAST.location: string
  • removed: property _ParseAST.parseFlags: ParseFlags
  • removed: property _ParseAST.tokens: Token[]
  • changed: class ASTWithSource extends AST → class ASTWithSource<T extends AST = AST> extends AST
  • changed: class Block implements BaseNode → class Block extends NodeWithI18n
  • changed: class TmplAstDeferredBlock implements TmplAstNode → class TmplAstDeferredBlock extends TmplAstBlockNode implements TmplAstNode
  • changed: class TmplAstDeferredBlockError implements TmplAstNode → class TmplAstDeferredBlockError extends TmplAstBlockNode implements TmplAstNode
  • changed: class TmplAstDeferredBlockLoading implements TmplAstNode → class TmplAstDeferredBlockLoading extends TmplAstBlockNode implements TmplAstNode
  • changed: class TmplAstDeferredBlockPlaceholder implements TmplAstNode → class TmplAstDeferredBlockPlaceholder extends TmplAstBlockNode implements TmplAstNode
  • changed: class TmplAstRecursiveVisitor implements Visitor_3<void> → class TmplAstRecursiveVisitor implements TmplAstVisitor<void>
  • changed: constructor ASTWithSource(ast: AST, source: string | null, location: string, absoluteOffset: number, errors: ParserError[]) → constructor ASTWithSource(ast: T, source: string | null, location: string, absoluteOffset: number, errors: ParserError[])
  • changed: constructor Block(name: string, parameters: BlockParameter[], children: Node_2[], sourceSpan: ParseSourceSpan, startSourceSpan: ParseSourceSpan, endSourceSpan?: ParseSourceSpan | null) → constructor Block(name: string, parameters: BlockParameter[], children: Node_2[], sourceSpan: ParseSourceSpan, nameSpan: ParseSourceSpan, startSourceSpan: ParseSourceSpan, endSourceSpan?: ParseSourceSpan | null, i18n?: I18nMeta_2)
  • changed: constructor CompilerConfig({ defaultEncapsulation, useJit, missingTranslation, preserveWhitespaces, strictInjectionParameters }?: { defaultEncapsulation?: ViewEncapsulation; useJit?: boolean; missingTranslation?: MissingTranslationStrategy | null; preserveWhitespaces?: boolean; strictInjectionParameters?: boolean }) → constructor CompilerConfig({ defaultEncapsulation, preserveWhitespaces, strictInjectionParameters }?: { defaultEncapsulation?: ViewEncapsulation; preserveWhitespaces?: boolean; strictInjectionParameters?: boolean })
  • changed: constructor TmplAstBoundDeferredTrigger(value: AST, sourceSpan: ParseSourceSpan) → constructor TmplAstBoundDeferredTrigger(value: AST, sourceSpan: ParseSourceSpan, prefetchSpan: ParseSourceSpan | null, whenSourceSpan: ParseSourceSpan)
  • changed: constructor TmplAstDeferredBlock(children: TmplAstNode[], triggers: TmplAstDeferredTrigger[], prefetchTriggers: TmplAstDeferredTrigger[], placeholder: TmplAstDeferredBlockPlaceholder | null, loading: TmplAstDeferredBlockLoading | null, error: TmplAstDeferredBlockError | null, sourceSpan: ParseSourceSpan, startSourceSpan: ParseSourceSpan, endSourceSpan: ParseSourceSpan | null) → constructor TmplAstDeferredBlock(children: TmplAstNode[], triggers: TmplAstDeferredBlockTriggers, prefetchTriggers: TmplAstDeferredBlockTriggers, placeholder: TmplAstDeferredBlockPlaceholder | null, loading: TmplAstDeferredBlockLoading | null, error: TmplAstDeferredBlockError | null, nameSpan: ParseSourceSpan, sourceSpan: ParseSourceSpan, mainBlockSpan: ParseSourceSpan, startSourceSpan: ParseSour…
  • changed: constructor TmplAstDeferredBlockError(children: TmplAstNode[], sourceSpan: ParseSourceSpan, startSourceSpan: ParseSourceSpan, endSourceSpan: ParseSourceSpan | null) → constructor TmplAstDeferredBlockError(children: TmplAstNode[], nameSpan: ParseSourceSpan, sourceSpan: ParseSourceSpan, startSourceSpan: ParseSourceSpan, endSourceSpan: ParseSourceSpan | null, i18n?: I18nMeta_2 | undefined)
  • changed: constructor TmplAstDeferredBlockLoading(children: TmplAstNode[], afterTime: number | null, minimumTime: number | null, sourceSpan: ParseSourceSpan, startSourceSpan: ParseSourceSpan, endSourceSpan: ParseSourceSpan | null) → constructor TmplAstDeferredBlockLoading(children: TmplAstNode[], afterTime: number | null, minimumTime: number | null, nameSpan: ParseSourceSpan, sourceSpan: ParseSourceSpan, startSourceSpan: ParseSourceSpan, endSourceSpan: ParseSourceSpan | null, i18n?: I18nMeta_2 | undefined)
  • changed: constructor TmplAstDeferredBlockPlaceholder(children: TmplAstNode[], minimumTime: number | null, sourceSpan: ParseSourceSpan, startSourceSpan: ParseSourceSpan, endSourceSpan: ParseSourceSpan | null) → constructor TmplAstDeferredBlockPlaceholder(children: TmplAstNode[], minimumTime: number | null, nameSpan: ParseSourceSpan, sourceSpan: ParseSourceSpan, startSourceSpan: ParseSourceSpan, endSourceSpan: ParseSourceSpan | null, i18n?: I18nMeta_2 | undefined)
  • changed: constructor TmplAstDeferredTrigger(sourceSpan: ParseSourceSpan) → constructor TmplAstDeferredTrigger(nameSpan: ParseSourceSpan | null, sourceSpan: ParseSourceSpan, prefetchSpan: ParseSourceSpan | null, whenOrOnSourceSpan: ParseSourceSpan | null)
  • changed: constructor TmplAstInteractionDeferredTrigger(reference: string | null, sourceSpan: ParseSourceSpan) → constructor TmplAstInteractionDeferredTrigger(reference: string | null, nameSpan: ParseSourceSpan, sourceSpan: ParseSourceSpan, prefetchSpan: ParseSourceSpan | null, onSourceSpan: ParseSourceSpan | null)
  • changed: constructor TmplAstTimerDeferredTrigger(delay: number, sourceSpan: ParseSourceSpan) → constructor TmplAstTimerDeferredTrigger(delay: number, nameSpan: ParseSourceSpan, sourceSpan: ParseSourceSpan, prefetchSpan: ParseSourceSpan | null, onSourceSpan: ParseSourceSpan | null)
  • changed: constructor TmplAstViewportDeferredTrigger(reference: string | null, sourceSpan: ParseSourceSpan) → constructor TmplAstViewportDeferredTrigger(reference: string | null, nameSpan: ParseSourceSpan, sourceSpan: ParseSourceSpan, prefetchSpan: ParseSourceSpan | null, onSourceSpan: ParseSourceSpan | null)
  • changed: function splitNsName(elementName: string): [string | null, string] → function splitNsName(elementName: string, fatal?: boolean): [string | null, string]
  • changed: member BinaryOperator.Bigger = 14 → member BinaryOperator.Bigger = 15
  • changed: member BinaryOperator.BiggerEquals = 15 → member BinaryOperator.BiggerEquals = 16
  • changed: member BinaryOperator.BitwiseAnd = 11 → member BinaryOperator.BitwiseAnd = 12
  • changed: member BinaryOperator.Lower = 12 → member BinaryOperator.Lower = 13
  • changed: member BinaryOperator.LowerEquals = 13 → member BinaryOperator.LowerEquals = 14
  • changed: member BinaryOperator.NullishCoalesce = 16 → member BinaryOperator.NullishCoalesce = 17
  • changed: method BoundTarget.getNestingLevel(template: TmplAstTemplate): number → method BoundTarget.getNestingLevel(node: ScopedNode): number
  • changed: method BoundTarget.getReferenceTarget(ref: TmplAstReference): { directive: DirectiveT; node: TmplAstElement | TmplAstTemplate } | TmplAstElement | TmplAstTemplate | null → method BoundTarget.getReferenceTarget(ref: TmplAstReference): ReferenceTarget<DirectiveT> | null
  • changed: method ConstantPool.uniqueName(prefix: string): string → method ConstantPool.uniqueName(name: string, alwaysIncludeSuffix?: boolean): string
  • changed: method FunctionExpr.isEquivalent(e: Expression): boolean → method FunctionExpr.isEquivalent(e: Expression | Statement): boolean
  • changed: method Parser.parseAction(input: string, isAssignmentEvent: boolean, location: string, absoluteOffset: number, interpolationConfig?: InterpolationConfig): ASTWithSource → method Parser.parseAction(input: string, location: string, absoluteOffset: number, interpolationConfig?: InterpolationConfig): ASTWithSource
  • changed: method R3BoundTarget.getNestingLevel(template: TmplAstTemplate): number → method R3BoundTarget.getNestingLevel(node: ScopedNode): number
  • changed: method R3BoundTarget.getReferenceTarget(ref: TmplAstReference): { directive: DirectiveT; node: TmplAstElement | TmplAstTemplate } | TmplAstElement | TmplAstTemplate | null → method R3BoundTarget.getReferenceTarget(ref: TmplAstReference): ReferenceTarget<DirectiveT> | null
  • changed: method TmplAstBoundAttribute.visit<Result>(visitor: Visitor_3<Result>): Result → method TmplAstBoundAttribute.visit<Result>(visitor: TmplAstVisitor<Result>): Result
  • changed: method TmplAstBoundEvent.visit<Result>(visitor: Visitor_3<Result>): Result → method TmplAstBoundEvent.visit<Result>(visitor: TmplAstVisitor<Result>): Result
  • changed: method TmplAstBoundText.visit<Result>(visitor: Visitor_3<Result>): Result → method TmplAstBoundText.visit<Result>(visitor: TmplAstVisitor<Result>): Result
  • changed: method TmplAstContent.visit<Result>(visitor: Visitor_3<Result>): Result → method TmplAstContent.visit<Result>(visitor: TmplAstVisitor<Result>): Result
  • changed: method TmplAstDeferredBlock.visit<Result>(visitor: Visitor_3<Result>): Result → method TmplAstDeferredBlock.visit<Result>(visitor: TmplAstVisitor<Result>): Result
  • changed: method TmplAstDeferredBlockError.visit<Result>(visitor: Visitor_3<Result>): Result → method TmplAstDeferredBlockError.visit<Result>(visitor: TmplAstVisitor<Result>): Result
  • changed: method TmplAstDeferredBlockLoading.visit<Result>(visitor: Visitor_3<Result>): Result → method TmplAstDeferredBlockLoading.visit<Result>(visitor: TmplAstVisitor<Result>): Result
  • changed: method TmplAstDeferredBlockPlaceholder.visit<Result>(visitor: Visitor_3<Result>): Result → method TmplAstDeferredBlockPlaceholder.visit<Result>(visitor: TmplAstVisitor<Result>): Result
  • changed: method TmplAstDeferredTrigger.visit<Result>(visitor: Visitor_3<Result>): Result → method TmplAstDeferredTrigger.visit<Result>(visitor: TmplAstVisitor<Result>): Result
  • changed: method TmplAstElement.visit<Result>(visitor: Visitor_3<Result>): Result → method TmplAstElement.visit<Result>(visitor: TmplAstVisitor<Result>): Result
  • changed: method TmplAstIcu.visit<Result>(visitor: Visitor_3<Result>): Result → method TmplAstIcu.visit<Result>(visitor: TmplAstVisitor<Result>): Result
  • changed: method TmplAstNode.visit<Result>(visitor: Visitor_3<Result>): Result → method TmplAstNode.visit<Result>(visitor: TmplAstVisitor<Result>): Result
  • changed: method TmplAstReference.visit<Result>(visitor: Visitor_3<Result>): Result → method TmplAstReference.visit<Result>(visitor: TmplAstVisitor<Result>): Result
  • changed: method TmplAstTemplate.visit<Result>(visitor: Visitor_3<Result>): Result → method TmplAstTemplate.visit<Result>(visitor: TmplAstVisitor<Result>): Result
  • changed: method TmplAstText.visit<Result>(visitor: Visitor_3<Result>): Result → method TmplAstText.visit<Result>(visitor: TmplAstVisitor<Result>): Result
  • changed: method TmplAstTextAttribute.visit<Result>(visitor: Visitor_3<Result>): Result → method TmplAstTextAttribute.visit<Result>(visitor: TmplAstVisitor<Result>): Result
  • changed: method TmplAstVariable.visit<Result>(visitor: Visitor_3<Result>): Result → method TmplAstVariable.visit<Result>(visitor: TmplAstVisitor<Result>): Result
  • changed: property ASTWithSource.ast: AST → property ASTWithSource.ast: T
  • changed: property R3ComponentMetadata.changeDetection?: ChangeDetectionStrategy → property R3ComponentMetadata.changeDetection: ChangeDetectionStrategy | outputAst.Expression | null
  • changed: property R3ComponentMetadata.deferBlocks: Map<t.DeferredBlock, Array<DeferBlockTemplateDependency>> → property R3ComponentMetadata.deferBlocks: Map<t.DeferredBlock, R3DeferBlockMetadata>
  • changed: property R3ComponentMetadata.template: { nodes: t.Node[]; ngContentSelectors: string[] } → property R3ComponentMetadata.template: { nodes: t.Node[]; ngContentSelectors: string[]; preserveWhitespaces?: boolean }
  • changed: property R3DeclareDirectiveMetadata.inputs?: { [classPropertyName: string]: string | [bindingPropertyName: string, classPropertyName: string, transformFunction?: outputAst.Expression] } → property R3DeclareDirectiveMetadata.inputs?: { [fieldName: string]: { classPropertyName: string; publicName: string; isSignal: boolean; isRequired: boolean; transformFunction: outputAst.Expression | null } | LegacyInputPartialMapping }
  • changed: property TmplAstDeferredBlock.prefetchTriggers: TmplAstDeferredTrigger[] → readonly property TmplAstDeferredBlock.prefetchTriggers: Readonly<TmplAstDeferredBlockTriggers>
  • changed: property TmplAstDeferredBlock.triggers: TmplAstDeferredTrigger[] → readonly property TmplAstDeferredBlock.triggers: Readonly<TmplAstDeferredBlockTriggers>
  • changed: type Node = Attribute | Comment_2 | Element_2 | Expansion | ExpansionCase | Text_2 | BlockGroup | Block | BlockParameter → type Node = Attribute | Comment_2 | Element_2 | Expansion | ExpansionCase | Text_2 | Block | BlockParameter
  • added: class ArrowFunctionExpr extends Expression
  • added: class TmplAstBlockNode
  • added: class TmplAstForLoopBlock extends TmplAstBlockNode implements TmplAstNode
  • added: class TmplAstForLoopBlockEmpty extends TmplAstBlockNode implements TmplAstNode
  • added: class TmplAstIfBlock extends TmplAstBlockNode implements TmplAstNode
  • added: class TmplAstIfBlockBranch extends TmplAstBlockNode implements TmplAstNode
  • added: class TmplAstSwitchBlock extends TmplAstBlockNode implements TmplAstNode
  • added: class TmplAstSwitchBlockCase extends TmplAstBlockNode implements TmplAstNode
  • added: class TmplAstUnknownBlock implements TmplAstNode
  • added: const enum DeferBlockDepsEmitMode
  • added: const enum LexerTokenType
  • added: constructor ArrowFunctionExpr(params: FnParam[], body: Expression | Statement[], type?: Type | null, sourceSpan?: ParseSourceSpan | null)
  • added: constructor ParsedEvent(name: string, targetOrPhase: string, type: ParsedEventType.TwoWay, handler: ASTWithSource<NonNullAssert | PropertyRead | KeyedRead>, sourceSpan: ParseSourceSpan, handlerSpan: ParseSourceSpan, keySpan: ParseSourceSpan)
  • added: constructor TmplAstBlockNode(nameSpan: ParseSourceSpan, sourceSpan: ParseSourceSpan, startSourceSpan: ParseSourceSpan, endSourceSpan: ParseSourceSpan | null)
  • added: constructor TmplAstForLoopBlock(item: TmplAstVariable, expression: ASTWithSource, trackBy: ASTWithSource, trackKeywordSpan: ParseSourceSpan, contextVariables: ForLoopBlockContext, children: TmplAstNode[], empty: TmplAstForLoopBlockEmpty | null, sourceSpan: ParseSourceSpan, mainBlockSpan: ParseSourceSpan, startSourceSpan: ParseSourceSpan, endSourceSpan: ParseSourceSpan | null, nameSpan: ParseSourc…
  • added: constructor TmplAstForLoopBlockEmpty(children: TmplAstNode[], sourceSpan: ParseSourceSpan, startSourceSpan: ParseSourceSpan, endSourceSpan: ParseSourceSpan | null, nameSpan: ParseSourceSpan, i18n?: I18nMeta_2 | undefined)
  • added: constructor TmplAstHoverDeferredTrigger(reference: string | null, nameSpan: ParseSourceSpan, sourceSpan: ParseSourceSpan, prefetchSpan: ParseSourceSpan | null, onSourceSpan: ParseSourceSpan | null)
  • added: constructor TmplAstIfBlock(branches: TmplAstIfBlockBranch[], sourceSpan: ParseSourceSpan, startSourceSpan: ParseSourceSpan, endSourceSpan: ParseSourceSpan | null, nameSpan: ParseSourceSpan)
  • added: constructor TmplAstIfBlockBranch(expression: AST | null, children: TmplAstNode[], expressionAlias: TmplAstVariable | null, sourceSpan: ParseSourceSpan, startSourceSpan: ParseSourceSpan, endSourceSpan: ParseSourceSpan | null, nameSpan: ParseSourceSpan, i18n?: I18nMeta_2 | undefined)
  • added: constructor TmplAstSwitchBlock(expression: AST, cases: TmplAstSwitchBlockCase[], unknownBlocks: TmplAstUnknownBlock[], sourceSpan: ParseSourceSpan, startSourceSpan: ParseSourceSpan, endSourceSpan: ParseSourceSpan | null, nameSpan: ParseSourceSpan)
  • added: constructor TmplAstSwitchBlockCase(expression: AST | null, children: TmplAstNode[], sourceSpan: ParseSourceSpan, startSourceSpan: ParseSourceSpan, endSourceSpan: ParseSourceSpan | null, nameSpan: ParseSourceSpan, i18n?: I18nMeta_2 | undefined)
  • added: constructor TmplAstUnknownBlock(name: string, sourceSpan: ParseSourceSpan, nameSpan: ParseSourceSpan)
  • added: function compileClassDebugInfo(debugInfo: R3ClassDebugInfo): outputAst.Expression
  • added: function compileComponentClassMetadata(metadata: R3ClassMetadata, deferrableTypes: Map<string, { importPath: string; isDefaultImport: boolean }> | null): outputAst.Expression
  • added: function createCssSelectorFromNode(node: t.Element | t.Template): CssSelector
  • added: function encapsulateStyle(style: string): string
  • added: function literal(value: any, type?: Type | null, sourceSpan?: ParseSourceSpan | null): LiteralExpr
  • added: function tmplAstVisitAll<Result>(visitor: TmplAstVisitor<Result>, nodes: TmplAstNode[]): Result[]
  • added: interface R3ClassDebugInfo
  • added: interface R3DeferBlockMetadata
  • added: interface R3DeferBlockTemplateDependency
  • added: interface TmplAstDeferredBlockTriggers
  • added: interface TmplAstVisitor<Result = any>
  • added: member BinaryOperator.BitwiseOr = 11
  • added: member BindingType.TwoWay = 5
  • added: member DeclarationListEmitMode.RuntimeResolved = 3
  • added: member DeferBlockDepsEmitMode.PerBlock = 0
  • added: member DeferBlockDepsEmitMode.PerComponent = 1
  • added: member LexerTokenType.ATTR_NAME = 14
  • added: member LexerTokenType.ATTR_QUOTE = 15
  • added: member LexerTokenType.ATTR_VALUE_INTERPOLATION = 17
  • added: member LexerTokenType.ATTR_VALUE_TEXT = 16
  • added: member LexerTokenType.BLOCK_CLOSE = 26
  • added: member LexerTokenType.BLOCK_OPEN_END = 25
  • added: member LexerTokenType.BLOCK_OPEN_START = 24
  • added: member LexerTokenType.BLOCK_PARAMETER = 27
  • added: member LexerTokenType.CDATA_END = 13
  • added: member LexerTokenType.CDATA_START = 12
  • added: member LexerTokenType.COMMENT_END = 11
  • added: member LexerTokenType.COMMENT_START = 10
  • added: member LexerTokenType.DOC_TYPE = 18
  • added: member LexerTokenType.ENCODED_ENTITY = 9
  • added: member LexerTokenType.EOF = 29
  • added: member LexerTokenType.ESCAPABLE_RAW_TEXT = 6
  • added: member LexerTokenType.EXPANSION_CASE_EXP_END = 22
  • added: member LexerTokenType.EXPANSION_CASE_EXP_START = 21
  • added: member LexerTokenType.EXPANSION_CASE_VALUE = 20
  • added: member LexerTokenType.EXPANSION_FORM_END = 23
  • added: member LexerTokenType.EXPANSION_FORM_START = 19
  • added: member LexerTokenType.INCOMPLETE_BLOCK_OPEN = 28
  • added: member LexerTokenType.INCOMPLETE_TAG_OPEN = 4
  • added: member LexerTokenType.INTERPOLATION = 8
  • added: member LexerTokenType.RAW_TEXT = 7
  • added: member LexerTokenType.TAG_CLOSE = 3
  • added: member LexerTokenType.TAG_OPEN_END = 1
  • added: member LexerTokenType.TAG_OPEN_END_VOID = 2
  • added: member LexerTokenType.TAG_OPEN_START = 0
  • added: member LexerTokenType.TEXT = 5
  • added: member ParsedEventType.TwoWay = 2
  • added: member ParsedPropertyType.TWO_WAY = 3
  • added: method ArrowFunctionExpr.clone(): Expression
  • added: method ArrowFunctionExpr.isConstant(): boolean
  • added: method ArrowFunctionExpr.isEquivalent(e: Expression): boolean
  • added: method ArrowFunctionExpr.toDeclStmt(name: string, modifiers?: StmtModifier): DeclareVarStmt
  • added: method ArrowFunctionExpr.visitExpression(visitor: ExpressionVisitor, context: any): any
  • added: method BoundTarget.getDeferredTriggerTarget(block: TmplAstDeferredBlock, trigger: TmplAstDeferredTrigger): TmplAstElement | null
  • added: method BoundTarget.getDefinitionNodeOfSymbol(symbol: TmplAstReference | TmplAstVariable): ScopedNode | null
  • added: method BoundTarget.getEntitiesInScope(node: ScopedNode | null): ReadonlySet<TmplAstReference | TmplAstVariable>
  • added: method BoundTarget.isDeferred(node: TmplAstElement): boolean
  • added: method ConstantPool.getSharedFunctionReference(fn: outputAst.FunctionExpr | outputAst.ArrowFunctionExpr, prefix: string, useUniqueName?: boolean): outputAst.Expression
  • added: method Expression.bitwiseOr(rhs: Expression, sourceSpan?: ParseSourceSpan | null, parens?: boolean): BinaryOperatorExpr
  • added: method ExpressionVisitor.visitArrowFunctionExpr(ast: ArrowFunctionExpr, context: any): any
  • added: method R3BoundTarget.getDeferredTriggerTarget(block: TmplAstDeferredBlock, trigger: TmplAstDeferredTrigger): TmplAstElement | null
  • added: method R3BoundTarget.getDefinitionNodeOfSymbol(symbol: TmplAstReference | TmplAstVariable): ScopedNode | null
  • added: method R3BoundTarget.getEntitiesInScope(node: ScopedNode | null): ReadonlySet<TmplAstReference | TmplAstVariable>
  • added: method R3BoundTarget.isDeferred(element: TmplAstElement): boolean
  • added: method TmplAstDeferredBlock.visitAll(visitor: TmplAstVisitor<unknown>): void
  • added: method TmplAstForLoopBlock.visit<Result>(visitor: TmplAstVisitor<Result>): Result
  • added: method TmplAstForLoopBlockEmpty.visit<Result>(visitor: TmplAstVisitor<Result>): Result
  • added: method TmplAstIfBlock.visit<Result>(visitor: TmplAstVisitor<Result>): Result
  • added: method TmplAstIfBlockBranch.visit<Result>(visitor: TmplAstVisitor<Result>): Result
  • added: method TmplAstRecursiveVisitor.visitForLoopBlock(block: TmplAstForLoopBlock): void
  • added: method TmplAstRecursiveVisitor.visitForLoopBlockEmpty(block: TmplAstForLoopBlockEmpty): void
  • added: method TmplAstRecursiveVisitor.visitIfBlock(block: TmplAstIfBlock): void
  • added: method TmplAstRecursiveVisitor.visitIfBlockBranch(block: TmplAstIfBlockBranch): void
  • added: method TmplAstRecursiveVisitor.visitSwitchBlock(block: TmplAstSwitchBlock): void
  • added: method TmplAstRecursiveVisitor.visitSwitchBlockCase(block: TmplAstSwitchBlockCase): void
  • added: method TmplAstRecursiveVisitor.visitUnknownBlock(block: TmplAstUnknownBlock): void
  • added: method TmplAstSwitchBlock.visit<Result>(visitor: TmplAstVisitor<Result>): Result
  • added: method TmplAstSwitchBlockCase.visit<Result>(visitor: TmplAstVisitor<Result>): Result
  • added: method TmplAstUnknownBlock.visit<Result>(visitor: TmplAstVisitor<Result>): Result
  • added: method TmplAstVisitor.visit?(node: TmplAstNode): Result
  • added: method TmplAstVisitor.visitBoundAttribute(attribute: TmplAstBoundAttribute): Result
  • added: method TmplAstVisitor.visitBoundEvent(attribute: TmplAstBoundEvent): Result
  • added: method TmplAstVisitor.visitBoundText(text: TmplAstBoundText): Result
  • added: method TmplAstVisitor.visitContent(content: TmplAstContent): Result
  • added: method TmplAstVisitor.visitDeferredBlock(deferred: TmplAstDeferredBlock): Result
  • added: method TmplAstVisitor.visitDeferredBlockError(block: TmplAstDeferredBlockError): Result
  • added: method TmplAstVisitor.visitDeferredBlockLoading(block: TmplAstDeferredBlockLoading): Result
  • added: method TmplAstVisitor.visitDeferredBlockPlaceholder(block: TmplAstDeferredBlockPlaceholder): Result
  • added: method TmplAstVisitor.visitDeferredTrigger(trigger: TmplAstDeferredTrigger): Result
  • added: method TmplAstVisitor.visitElement(element: TmplAstElement): Result
  • added: method TmplAstVisitor.visitForLoopBlock(block: TmplAstForLoopBlock): Result
  • added: method TmplAstVisitor.visitForLoopBlockEmpty(block: TmplAstForLoopBlockEmpty): Result
  • added: method TmplAstVisitor.visitIcu(icu: TmplAstIcu): Result
  • added: method TmplAstVisitor.visitIfBlock(block: TmplAstIfBlock): Result
  • added: method TmplAstVisitor.visitIfBlockBranch(block: TmplAstIfBlockBranch): Result
  • added: method TmplAstVisitor.visitReference(reference: TmplAstReference): Result
  • added: method TmplAstVisitor.visitSwitchBlock(block: TmplAstSwitchBlock): Result
  • added: method TmplAstVisitor.visitSwitchBlockCase(block: TmplAstSwitchBlockCase): Result
  • added: method TmplAstVisitor.visitTemplate(template: TmplAstTemplate): Result
  • added: method TmplAstVisitor.visitText(text: TmplAstText): Result
  • added: method TmplAstVisitor.visitTextAttribute(attribute: TmplAstTextAttribute): Result
  • added: method TmplAstVisitor.visitUnknownBlock(block: TmplAstUnknownBlock): Result
  • added: method TmplAstVisitor.visitVariable(variable: TmplAstVariable): Result
  • added: property ArrowFunctionExpr.body: Expression | Statement[]
  • added: property ArrowFunctionExpr.params: FnParam[]
  • added: property Block.nameSpan: ParseSourceSpan
  • added: property DirectiveMeta.ngContentSelectors: string[] | null
  • added: property DirectiveMeta.preserveWhitespaces: boolean
  • added: property ParseTemplateOptions.enableBlockSyntax?: boolean
  • added: property R3ClassDebugInfo.className: outputAst.Expression
  • added: property R3ClassDebugInfo.filePath: outputAst.Expression | null
  • added: property R3ClassDebugInfo.forbidOrphanRendering: boolean
  • added: property R3ClassDebugInfo.lineNumber: outputAst.Expression
  • added: property R3ClassDebugInfo.type: outputAst.Expression
  • added: property R3ComponentMetadata.deferBlockDepsEmitMode: DeferBlockDepsEmitMode
  • added: property R3ComponentMetadata.deferrableTypes: Map<string, { importPath: string; isDefaultImport: boolean }>
  • added: property R3ComponentMetadata.rawImports?: outputAst.Expression
  • added: property R3ComponentMetadata.useTemplatePipeline: boolean
  • added: property R3DeclareQueryMetadata.isSignal: boolean
  • added: property R3DeferBlockMetadata.deps: R3DeferBlockTemplateDependency[]
  • added: property R3DeferBlockMetadata.triggerElements: Map<t.DeferredTrigger, t.Element | null>
  • added: property R3DeferBlockTemplateDependency.importPath: string | null
  • added: property R3DeferBlockTemplateDependency.isDefaultImport: boolean
  • added: property R3DeferBlockTemplateDependency.isDeferrable: boolean
  • added: property R3DeferBlockTemplateDependency.symbolName: string
  • added: property R3DeferBlockTemplateDependency.type: outputAst.WrappedNodeExpr<unknown>
  • added: property R3HostMetadata.useTemplatePipeline: boolean
  • added: property R3InputMetadata.isSignal: boolean
  • added: property R3QueryMetadata.isSignal: boolean
  • added: property TmplAstBlockNode.endSourceSpan: ParseSourceSpan | null
  • added: property TmplAstBlockNode.nameSpan: ParseSourceSpan
  • added: property TmplAstBlockNode.sourceSpan: ParseSourceSpan
  • added: property TmplAstBlockNode.startSourceSpan: ParseSourceSpan
  • added: property TmplAstDeferredBlock.i18n?: I18nMeta_2 | undefined
  • added: property TmplAstDeferredBlock.mainBlockSpan: ParseSourceSpan
  • added: property TmplAstDeferredBlockError.i18n?: I18nMeta_2 | undefined
  • added: property TmplAstDeferredBlockLoading.i18n?: I18nMeta_2 | undefined
  • added: property TmplAstDeferredBlockPlaceholder.i18n?: I18nMeta_2 | undefined
  • added: property TmplAstDeferredBlockTriggers.hover?: TmplAstHoverDeferredTrigger
  • added: property TmplAstDeferredBlockTriggers.idle?: TmplAstIdleDeferredTrigger
  • added: property TmplAstDeferredBlockTriggers.immediate?: TmplAstImmediateDeferredTrigger
  • added: property TmplAstDeferredBlockTriggers.interaction?: TmplAstInteractionDeferredTrigger
  • added: property TmplAstDeferredBlockTriggers.timer?: TmplAstTimerDeferredTrigger
  • added: property TmplAstDeferredBlockTriggers.viewport?: TmplAstViewportDeferredTrigger
  • added: property TmplAstDeferredBlockTriggers.when?: TmplAstBoundDeferredTrigger
  • added: property TmplAstDeferredTrigger.nameSpan: ParseSourceSpan | null
  • added: property TmplAstDeferredTrigger.prefetchSpan: ParseSourceSpan | null
  • added: property TmplAstDeferredTrigger.whenOrOnSourceSpan: ParseSourceSpan | null
  • added: property TmplAstForLoopBlock.children: TmplAstNode[]
  • added: property TmplAstForLoopBlock.contextVariables: ForLoopBlockContext
  • added: property TmplAstForLoopBlock.empty: TmplAstForLoopBlockEmpty | null
  • added: property TmplAstForLoopBlock.expression: ASTWithSource
  • added: property TmplAstForLoopBlock.i18n?: I18nMeta_2 | undefined
  • added: property TmplAstForLoopBlock.item: TmplAstVariable
  • added: property TmplAstForLoopBlock.mainBlockSpan: ParseSourceSpan
  • added: property TmplAstForLoopBlock.trackBy: ASTWithSource
  • added: property TmplAstForLoopBlock.trackKeywordSpan: ParseSourceSpan
  • added: property TmplAstForLoopBlockEmpty.children: TmplAstNode[]
  • added: property TmplAstForLoopBlockEmpty.i18n?: I18nMeta_2 | undefined
  • added: property TmplAstHoverDeferredTrigger.reference: string | null
  • added: property TmplAstIfBlock.branches: TmplAstIfBlockBranch[]
  • added: property TmplAstIfBlockBranch.children: TmplAstNode[]
  • added: property TmplAstIfBlockBranch.expression: AST | null
  • added: property TmplAstIfBlockBranch.expressionAlias: TmplAstVariable | null
  • added: property TmplAstIfBlockBranch.i18n?: I18nMeta_2 | undefined
  • added: property TmplAstSwitchBlock.cases: TmplAstSwitchBlockCase[]
  • added: property TmplAstSwitchBlock.expression: AST
  • added: property TmplAstSwitchBlock.unknownBlocks: TmplAstUnknownBlock[]
  • added: property TmplAstSwitchBlockCase.children: TmplAstNode[]
  • added: property TmplAstSwitchBlockCase.expression: AST | null
  • added: property TmplAstSwitchBlockCase.i18n?: I18nMeta_2 | undefined
  • added: property TmplAstUnknownBlock.name: string
  • added: property TmplAstUnknownBlock.nameSpan: ParseSourceSpan
  • added: property TmplAstUnknownBlock.sourceSpan: ParseSourceSpan
  • added: static property R3Identifiers.InputFlags: outputAst.ExternalReference
  • added: static property R3Identifiers.InputSignalBrandWriteType: { name: string; moduleName: string }
  • added: static property R3Identifiers.UnwrapDirectiveSignalInputs: { name: string; moduleName: string }
  • added: static property R3Identifiers.componentInstance: outputAst.ExternalReference
  • added: static property R3Identifiers.conditional: outputAst.ExternalReference
  • added: static property R3Identifiers.contentQuerySignal: outputAst.ExternalReference
  • added: static property R3Identifiers.deferEnableTimerScheduling: outputAst.ExternalReference
  • added: static property R3Identifiers.deferOnHover: outputAst.ExternalReference
  • added: static property R3Identifiers.deferOnIdle: outputAst.ExternalReference
  • added: static property R3Identifiers.deferOnImmediate: outputAst.ExternalReference
  • added: static property R3Identifiers.deferOnInteraction: outputAst.ExternalReference
  • added: static property R3Identifiers.deferOnTimer: outputAst.ExternalReference
  • added: static property R3Identifiers.deferOnViewport: outputAst.ExternalReference
  • added: static property R3Identifiers.deferPrefetchOnHover: outputAst.ExternalReference
  • added: static property R3Identifiers.deferPrefetchOnIdle: outputAst.ExternalReference
  • added: static property R3Identifiers.deferPrefetchOnImmediate: outputAst.ExternalReference
  • added: static property R3Identifiers.deferPrefetchOnInteraction: outputAst.ExternalReference
  • added: static property R3Identifiers.deferPrefetchOnTimer: outputAst.ExternalReference
  • added: static property R3Identifiers.deferPrefetchOnViewport: outputAst.ExternalReference
  • added: static property R3Identifiers.deferPrefetchWhen: outputAst.ExternalReference
  • added: static property R3Identifiers.deferWhen: outputAst.ExternalReference
  • added: static property R3Identifiers.getComponentDepsFactory: outputAst.ExternalReference
  • added: static property R3Identifiers.queryAdvance: outputAst.ExternalReference
  • added: static property R3Identifiers.repeater: outputAst.ExternalReference
  • added: static property R3Identifiers.repeaterCreate: outputAst.ExternalReference
  • added: static property R3Identifiers.repeaterTrackByIdentity: outputAst.ExternalReference
  • added: static property R3Identifiers.repeaterTrackByIndex: outputAst.ExternalReference
  • added: static property R3Identifiers.setClassDebugInfo: outputAst.ExternalReference
  • added: static property R3Identifiers.setClassMetadataAsync: outputAst.ExternalReference
  • added: static property R3Identifiers.twoWayBindingSet: outputAst.ExternalReference
  • added: static property R3Identifiers.twoWayListener: outputAst.ExternalReference
  • added: static property R3Identifiers.twoWayProperty: outputAst.ExternalReference
  • added: static property R3Identifiers.unwrapWritableSignal: { name: string; moduleName: string }
  • added: static property R3Identifiers.viewQuerySignal: outputAst.ExternalReference
  • added: type LegacyInputPartialMapping = string | [bindingPropertyName: string, classPropertyName: string, transformFunction?: outputAst.Expression]
  • added: type ReferenceTarget<DirectiveT> = { directive: DirectiveT; node: TmplAstElement | TmplAstTemplate } | TmplAstElement | TmplAstTemplate
  • added: type ScopedNode = TmplAstTemplate | TmplAstSwitchBlockCase | TmplAstIfBlockBranch | TmplAstForLoopBlock | TmplAstForLoopBlockEmpty | TmplAstDeferredBlock | TmplAstDeferredBlockE…
  • removed: const unusedExport = true