|
6 | 6 | * found in the LICENSE file at https://angular.io/license |
7 | 7 | */ |
8 | 8 |
|
9 | | -import {AST, BindingPipe, BindingType, BoundTarget, Call, createCssSelectorFromNode, CssSelector, DYNAMIC_TYPE, ExpressionType, ImplicitReceiver, ParsedEventType, ParseSourceSpan, PropertyRead, PropertyWrite, R3Identifiers, SafeCall, SafePropertyRead, SchemaMetadata, SelectorMatcher, ThisReceiver, TmplAstBoundAttribute, TmplAstBoundEvent, TmplAstBoundText, TmplAstDeferredBlock, TmplAstDeferredBlockTriggers, TmplAstElement, TmplAstForLoopBlock, TmplAstForLoopBlockEmpty, TmplAstHoverDeferredTrigger, TmplAstIcu, TmplAstIfBlock, TmplAstIfBlockBranch, TmplAstInteractionDeferredTrigger, TmplAstNode, TmplAstReference, TmplAstSwitchBlock, TmplAstSwitchBlockCase, TmplAstTemplate, TmplAstText, TmplAstTextAttribute, TmplAstVariable, TmplAstViewportDeferredTrigger, TransplantedType, TypeofExpr, WrappedNodeExpr} from '@angular/compiler'; |
| 9 | +import {AST, BindingPipe, BindingType, BoundTarget, Call, createCssSelectorFromNode, CssSelector, DYNAMIC_TYPE, ImplicitReceiver, ParsedEventType, ParseSourceSpan, PropertyRead, PropertyWrite, R3Identifiers, SafeCall, SafePropertyRead, SchemaMetadata, SelectorMatcher, ThisReceiver, TmplAstBoundAttribute, TmplAstBoundEvent, TmplAstBoundText, TmplAstDeferredBlock, TmplAstDeferredBlockTriggers, TmplAstElement, TmplAstForLoopBlock, TmplAstForLoopBlockEmpty, TmplAstHoverDeferredTrigger, TmplAstIcu, TmplAstIfBlock, TmplAstIfBlockBranch, TmplAstInteractionDeferredTrigger, TmplAstNode, TmplAstReference, TmplAstSwitchBlock, TmplAstSwitchBlockCase, TmplAstTemplate, TmplAstText, TmplAstTextAttribute, TmplAstVariable, TmplAstViewportDeferredTrigger, TransplantedType} from '@angular/compiler'; |
10 | 10 | import ts from 'typescript'; |
11 | 11 |
|
12 | 12 | import {Reference} from '../../imports'; |
@@ -792,12 +792,12 @@ class TcbDirectiveInputsOp extends TcbOp { |
792 | 792 | dirId, ts.factory.createIdentifier(fieldName)); |
793 | 793 | } |
794 | 794 |
|
| 795 | + // For signal inputs, we unwrap the target `InputSignal`. Note that |
| 796 | + // we intentionally do the following things: |
| 797 | + // 1. keep the direct access to `dir.[field]` so that modifiers are honored. |
| 798 | + // 2. follow the existing pattern where multiple targets assign a single expression. |
| 799 | + // This is a significant requirement for language service auto-completion. |
795 | 800 | if (isSignal) { |
796 | | - // For signal inputs, we unwrap the target `InputSignal`. Note that |
797 | | - // we intentionally do the following things: |
798 | | - // 1. keep the direct access to `dir.[field]` so that modifiers are honored. |
799 | | - // 2. follow the existing pattern where multiple targets assign a single expression. |
800 | | - // This is a significant requirement for language service auto-completion. |
801 | 801 | const inputSignalBrandWriteSymbol = this.tcb.env.referenceExternalSymbol( |
802 | 802 | R3Identifiers.InputSignalBrandWriteType.moduleName, |
803 | 803 | R3Identifiers.InputSignalBrandWriteType.name); |
|
0 commit comments