diff --git a/packages/compiler-cli/src/ngtsc/core/src/compiler.ts b/packages/compiler-cli/src/ngtsc/core/src/compiler.ts index 5c5df5223876a..a7c9344b2b6fc 100644 --- a/packages/compiler-cli/src/ngtsc/core/src/compiler.ts +++ b/packages/compiler-cli/src/ngtsc/core/src/compiler.ts @@ -459,6 +459,15 @@ export class NgCompiler { return this.addMessageTextDetails(diagnostics); } + /** + * Get all `ts.Diagnostic`s currently available that pertain to the given component. + */ + getDiagnosticsForComponent(component: ts.ClassDeclaration): ts.Diagnostic[] { + const compilation = this.ensureAnalyzed(); + const ttc = compilation.templateTypeChecker; + return this.addMessageTextDetails(ttc.getDiagnosticsForComponent(component)); + } + /** * Add Angular.io error guide links to diagnostics for this compilation. */ diff --git a/packages/language-service/ivy/language_service.ts b/packages/language-service/ivy/language_service.ts index 66573f971d51b..dc175106bcc91 100644 --- a/packages/language-service/ivy/language_service.ts +++ b/packages/language-service/ivy/language_service.ts @@ -68,7 +68,6 @@ export class LanguageService { getSemanticDiagnostics(fileName: string): ts.Diagnostic[] { return this.withCompilerAndPerfTracing(PerfPhase.LsDiagnostics, (compiler) => { - const ttc = compiler.getTemplateTypeChecker(); const diagnostics: ts.Diagnostic[] = []; if (isTypeScriptFile(fileName)) { const program = compiler.getCurrentProgram(); @@ -104,7 +103,7 @@ export class LanguageService { const components = compiler.getComponentsWithTemplateFile(fileName); for (const component of components) { if (ts.isClassDeclaration(component)) { - diagnostics.push(...ttc.getDiagnosticsForComponent(component)); + diagnostics.push(...compiler.getDiagnosticsForComponent(component)); } } }