diff --git a/packages/language-core/lib/codegen/template/templateChild.ts b/packages/language-core/lib/codegen/template/templateChild.ts
index ad3608242f..ea61cbb83c 100644
--- a/packages/language-core/lib/codegen/template/templateChild.ts
+++ b/packages/language-core/lib/codegen/template/templateChild.ts
@@ -49,6 +49,11 @@ export function* generateTemplateChild(
const shouldInheritRootNodeAttrs = options.inheritAttrs;
+ const cur = node as CompilerDOM.ElementNode | CompilerDOM.IfNode | CompilerDOM.ForNode;
+ if (cur.codegenNode?.type === CompilerDOM.NodeTypes.JS_CACHE_EXPRESSION) {
+ cur.codegenNode = cur.codegenNode.value as any;
+ }
+
if (node.type === CompilerDOM.NodeTypes.ROOT) {
let prev: CompilerDOM.TemplateChildNode | undefined;
if (shouldInheritRootNodeAttrs && node.children.length === 1 && node.children[0].type === CompilerDOM.NodeTypes.ELEMENT) {
diff --git a/test-workspace/tsc/passedFixtures/vue3/#4827/child.vue b/test-workspace/tsc/passedFixtures/vue3/#4827/child.vue
new file mode 100644
index 0000000000..4e508d7cc9
--- /dev/null
+++ b/test-workspace/tsc/passedFixtures/vue3/#4827/child.vue
@@ -0,0 +1,3 @@
+
+
+
diff --git a/test-workspace/tsc/passedFixtures/vue3/#4827/main.vue b/test-workspace/tsc/passedFixtures/vue3/#4827/main.vue
new file mode 100644
index 0000000000..18d02c1782
--- /dev/null
+++ b/test-workspace/tsc/passedFixtures/vue3/#4827/main.vue
@@ -0,0 +1,7 @@
+
+
+
+
+
\ No newline at end of file