diff --git a/packages/language-service/src/typescript_host.ts b/packages/language-service/src/typescript_host.ts
index 34cd7e94d7..a9576638b4 100644
--- a/packages/language-service/src/typescript_host.ts
+++ b/packages/language-service/src/typescript_host.ts
@@ -501,7 +501,7 @@ export class TypeScriptServiceHost implements LanguageServiceHost {
if (!data) {
return;
}
- const htmlParser = new I18NHtmlParser(new HtmlParser());
+ const htmlParser = new HtmlParser();
const expressionParser = new Parser(new Lexer());
const parser = new TemplateParser(
new CompilerConfig(), this.reflector, expressionParser, new DomElementSchemaRegistry(),
diff --git a/packages/language-service/test/completions_spec.ts b/packages/language-service/test/completions_spec.ts
index 8b27a382ed..ec8c6c32fe 100644
--- a/packages/language-service/test/completions_spec.ts
+++ b/packages/language-service/test/completions_spec.ts
@@ -734,6 +734,13 @@ describe('completions', () => {
});
});
});
+
+ it('should not expand i18n templates', () => {
+ mockHost.override(TEST_TEMPLATE, `
{{~{cursor}}}
`);
+ const marker = mockHost.getLocationMarkerFor(TEST_TEMPLATE, 'cursor');
+ const completions = ngLS.getCompletionsAt(TEST_TEMPLATE, marker.start);
+ expectContain(completions, CompletionKind.PROPERTY, ['title']);
+ });
});
function expectContain(
diff --git a/packages/language-service/test/definitions_spec.ts b/packages/language-service/test/definitions_spec.ts
index 8a7d731d7c..175a8ecfd3 100644
--- a/packages/language-service/test/definitions_spec.ts
+++ b/packages/language-service/test/definitions_spec.ts
@@ -306,4 +306,29 @@ describe('definitions', () => {
expect(def.fileName).toBe('/app/test.css');
expect(def.textSpan).toEqual({start: 0, length: 0});
});
+
+ it('should not expand i18n templates', () => {
+ const fileName = mockHost.addCode(`
+ @Component({
+ template: '{{«name»}}
'
+ })
+ export class MyComponent {
+ «ᐱnameᐱ: string;»
+ }`);
+
+ const marker = mockHost.getReferenceMarkerFor(fileName, 'name');
+ const result = ngService.getDefinitionAt(fileName, marker.start);
+ expect(result).toBeDefined();
+ const {textSpan, definitions} = result !;
+
+ expect(textSpan).toEqual(marker);
+ expect(definitions).toBeDefined();
+ expect(definitions !.length).toBe(1);
+ const def = definitions ![0];
+
+ expect(def.fileName).toBe(fileName);
+ expect(def.name).toBe('name');
+ expect(def.kind).toBe('property');
+ expect(def.textSpan).toEqual(mockHost.getDefinitionMarkerFor(fileName, 'name'));
+ });
});
diff --git a/packages/language-service/test/hover_spec.ts b/packages/language-service/test/hover_spec.ts
index 2bc04211d5..d94a94ff63 100644
--- a/packages/language-service/test/hover_spec.ts
+++ b/packages/language-service/test/hover_spec.ts
@@ -223,6 +223,22 @@ describe('hover', () => {
const documentation = toText(quickInfo !.documentation);
expect(documentation).toBe('This Component provides the `test-comp` selector.');
});
+
+ it('should not expand i18n templates', () => {
+ const fileName = mockHost.addCode(`
+ @Component({
+ template: '{{«name»}}
'
+ })
+ export class MyComponent {
+ name: string;
+ }`);
+ const marker = mockHost.getReferenceMarkerFor(fileName, 'name');
+ const quickInfo = ngLS.getHoverAt(fileName, marker.start);
+ expect(quickInfo).toBeTruthy();
+ const {textSpan, displayParts} = quickInfo !;
+ expect(textSpan).toEqual(marker);
+ expect(toText(displayParts)).toBe('(property) MyComponent.name: string');
+ });
});
function toText(displayParts?: ts.SymbolDisplayPart[]): string {