diff --git a/packages/language-service/src/completions.ts b/packages/language-service/src/completions.ts index 79ea098da0..de3c53cdc3 100644 --- a/packages/language-service/src/completions.ts +++ b/packages/language-service/src/completions.ts @@ -469,11 +469,15 @@ class ExpressionVisitor extends NullTemplateVisitor { if (s.name.startsWith('__') || !s.public || this.completions.has(s.name)) { continue; } + + // The pipe method should not include parentheses. + // e.g. {{ value_expression | slice : start [ : end ] }} + const shouldInsertParentheses = s.callable && s.kind !== ng.CompletionKind.PIPE; this.completions.set(s.name, { name: s.name, kind: s.kind as ng.CompletionKind, sortText: s.name, - insertText: s.callable ? `${s.name}()` : s.name, + insertText: shouldInsertParentheses ? `${s.name}()` : s.name, }); } } diff --git a/packages/language-service/test/completions_spec.ts b/packages/language-service/test/completions_spec.ts index e94977dd9f..4f8e03f5c5 100644 --- a/packages/language-service/test/completions_spec.ts +++ b/packages/language-service/test/completions_spec.ts @@ -208,6 +208,18 @@ describe('completions', () => { })); }); + it('for methods of pipe should not include parentheses', () => { + mockHost.override(TEST_TEMPLATE, `