diff --git a/apps/analog-app/src/app/pages/package.page.ts b/apps/analog-app/src/app/pages/package.page.ts
index e622651ab..1eff37db2 100644
--- a/apps/analog-app/src/app/pages/package.page.ts
+++ b/apps/analog-app/src/app/pages/package.page.ts
@@ -1,8 +1,8 @@
import { Component } from '@angular/core';
-import { MyPackageComponent } from 'my-package';
+import { MyPackage } from 'my-package';
@Component({
- imports: [MyPackageComponent],
+ imports: [MyPackage],
template: ` `,
})
export default class PackagePageComponent {}
diff --git a/libs/my-package/src/index.ts b/libs/my-package/src/index.ts
index 4451f9a7b..b78220f06 100644
--- a/libs/my-package/src/index.ts
+++ b/libs/my-package/src/index.ts
@@ -1 +1 @@
-export * from './lib/my-package/my-package.component';
+export * from './lib/my-package/my-package';
diff --git a/libs/my-package/src/lib/my-package/allow-overrides-with-aot.spec.ts b/libs/my-package/src/lib/my-package/allow-overrides-with-aot.spec.ts
new file mode 100644
index 000000000..61e4fad87
--- /dev/null
+++ b/libs/my-package/src/lib/my-package/allow-overrides-with-aot.spec.ts
@@ -0,0 +1,16 @@
+import { TestBed } from '@angular/core/testing';
+import { MyPackage } from './my-package';
+import { test } from 'vitest';
+
+test('overrides should work even when AOT is enabled', () => {
+ /* AOT is enabled through `angular({jit: false})` in `../../../vite.config.ts`. */
+
+ TestBed.overrideComponent(MyPackage, {
+ set: {
+ template: 'My Overriden Package',
+ },
+ });
+
+ const fixture = TestBed.createComponent(MyPackage);
+ expect(fixture.nativeElement.textContent).toBe('My Overriden Package');
+});
diff --git a/libs/my-package/src/lib/my-package/my-package.component.css b/libs/my-package/src/lib/my-package/my-package.component.css
deleted file mode 100644
index e69de29bb..000000000
diff --git a/libs/my-package/src/lib/my-package/my-package.component.html b/libs/my-package/src/lib/my-package/my-package.component.html
deleted file mode 100644
index 5b87304e1..000000000
--- a/libs/my-package/src/lib/my-package/my-package.component.html
+++ /dev/null
@@ -1 +0,0 @@
-
MyPackage works!
diff --git a/libs/my-package/src/lib/my-package/my-package.component.spec.ts b/libs/my-package/src/lib/my-package/my-package.component.spec.ts
deleted file mode 100644
index fc5b2f552..000000000
--- a/libs/my-package/src/lib/my-package/my-package.component.spec.ts
+++ /dev/null
@@ -1,21 +0,0 @@
-import { ComponentFixture, TestBed } from '@angular/core/testing';
-import { MyPackageComponent } from './my-package.component';
-
-describe('MyPackageComponent', () => {
- let component: MyPackageComponent;
- let fixture: ComponentFixture;
-
- beforeEach(async () => {
- await TestBed.configureTestingModule({
- imports: [MyPackageComponent],
- }).compileComponents();
-
- fixture = TestBed.createComponent(MyPackageComponent);
- component = fixture.componentInstance;
- fixture.detectChanges();
- });
-
- it('should create', () => {
- expect(component).toBeTruthy();
- });
-});
diff --git a/libs/my-package/src/lib/my-package/my-package.component.ts b/libs/my-package/src/lib/my-package/my-package.component.ts
deleted file mode 100644
index d55019c2c..000000000
--- a/libs/my-package/src/lib/my-package/my-package.component.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-import { Component } from '@angular/core';
-import { CommonModule } from '@angular/common';
-
-@Component({
- selector: 'lib-my-package',
- imports: [CommonModule],
- templateUrl: './my-package.component.html',
- styleUrl: './my-package.component.css',
-})
-export class MyPackageComponent {}
diff --git a/libs/my-package/src/lib/my-package/my-package.ts b/libs/my-package/src/lib/my-package/my-package.ts
new file mode 100644
index 000000000..4f84ab782
--- /dev/null
+++ b/libs/my-package/src/lib/my-package/my-package.ts
@@ -0,0 +1,8 @@
+import { ChangeDetectionStrategy, Component } from '@angular/core';
+import { CommonModule } from '@angular/common';
+
+@Component({
+ selector: 'lib-my-package',
+ template: `My Package`,
+})
+export class MyPackage {}
diff --git a/libs/my-package/vite.config.ts b/libs/my-package/vite.config.ts
index b149cbd5e..1474e1c8f 100644
--- a/libs/my-package/vite.config.ts
+++ b/libs/my-package/vite.config.ts
@@ -8,7 +8,7 @@ export default defineConfig(({ mode }) => ({
root: __dirname,
cacheDir: '../../node_modules/.vite/libs/my-package',
plugins: [
- angular(),
+ angular({ jit: false }),
nxViteTsPaths(),
nxCopyAssetsPlugin(['*.md', 'package.json']),
],
diff --git a/packages/vite-plugin-angular/src/lib/angular-vite-plugin.ts b/packages/vite-plugin-angular/src/lib/angular-vite-plugin.ts
index dbbee98dc..75a73b0ca 100644
--- a/packages/vite-plugin-angular/src/lib/angular-vite-plugin.ts
+++ b/packages/vite-plugin-angular/src/lib/angular-vite-plugin.ts
@@ -787,6 +787,11 @@ export function angular(options?: PluginOptions): Plugin[] {
tsCompilerOptions['inlineSources'] = true;
}
+ if (isTest) {
+ // Allow `TestBed.overrideXXX()` APIs.
+ tsCompilerOptions['supportTestBed'] = true;
+ }
+
const replacements: string[] = pluginOptions.fileReplacements.map((rp) =>
join(
pluginOptions.workspaceRoot,