diff --git a/apps/example-app-karma/project.json b/apps/example-app-karma/project.json
index 673471e5..02434953 100644
--- a/apps/example-app-karma/project.json
+++ b/apps/example-app-karma/project.json
@@ -13,7 +13,6 @@
"outputPath": "dist/apps/example-app-karma",
"index": "apps/example-app-karma/src/index.html",
"main": "apps/example-app-karma/src/main.ts",
- "polyfills": "apps/example-app-karma/src/polyfills.ts",
"tsConfig": "apps/example-app-karma/tsconfig.app.json",
"assets": ["apps/example-app-karma/src/favicon.ico", "apps/example-app-karma/src/assets"],
"styles": [],
@@ -27,12 +26,6 @@
"maximumWarning": "6kb"
}
],
- "fileReplacements": [
- {
- "replace": "apps/example-app-karma/src/environments/environment.ts",
- "with": "apps/example-app-karma/src/environments/environment.prod.ts"
- }
- ],
"outputHashing": "all"
},
"development": {
@@ -74,7 +67,6 @@
"options": {
"main": "apps/example-app-karma/src/test.ts",
"tsConfig": "apps/example-app-karma/tsconfig.spec.json",
- "polyfills": "apps/example-app-karma/src/polyfills.ts",
"karmaConfig": "apps/example-app-karma/karma.conf.js"
}
}
diff --git a/apps/example-app-karma/src/app/app.module.ts b/apps/example-app-karma/src/app/app.module.ts
deleted file mode 100644
index e636d9eb..00000000
--- a/apps/example-app-karma/src/app/app.module.ts
+++ /dev/null
@@ -1,9 +0,0 @@
-import { BrowserModule } from '@angular/platform-browser';
-import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
-import { NgModule } from '@angular/core';
-
-@NgModule({
- declarations: [],
- imports: [BrowserModule, BrowserAnimationsModule],
-})
-export class AppModule {}
diff --git a/apps/example-app-karma/src/app/examples/login-form.spec.ts b/apps/example-app-karma/src/app/examples/login-form.spec.ts
new file mode 100644
index 00000000..07a1e1d1
--- /dev/null
+++ b/apps/example-app-karma/src/app/examples/login-form.spec.ts
@@ -0,0 +1,75 @@
+import { Component } from '@angular/core';
+import { FormBuilder, FormControl, FormGroup, Validators, ReactiveFormsModule } from '@angular/forms';
+import userEvent from '@testing-library/user-event';
+import { render, screen } from '@testing-library/angular';
+import { NgIf } from '@angular/common';
+
+it('should create a component with inputs and a button to submit', async () => {
+ await render(LoginComponent);
+
+ expect(screen.getByRole('textbox', { name: 'email' })).toBeInTheDocument();
+ expect(screen.getByLabelText('password')).toBeInTheDocument();
+ expect(screen.getByRole('button', { name: 'submit' })).toBeInTheDocument();
+});
+
+it('should display invalid message and submit button must be disabled', async () => {
+ const user = userEvent.setup();
+
+ await render(LoginComponent);
+
+ const email = screen.getByRole('textbox', { name: 'email' });
+ const password = screen.getByLabelText('password');
+
+ await user.type(email, 'foo');
+ await user.type(password, 's');
+
+ expect(screen.getAllByText(/is invalid/i).length).toBe(2);
+ expect(screen.getAllByRole('alert').length).toBe(2);
+ expect(screen.getByRole('button', { name: 'submit' })).toBeDisabled();
+});
+
+@Component({
+ selector: 'app-login',
+ standalone: true,
+ imports: [ReactiveFormsModule, NgIf],
+ template: `
+
Login
+
+
+ `,
+})
+class LoginComponent {
+ form: FormGroup = this.fb.group({
+ email: ['', [Validators.required, Validators.email]],
+ password: ['', [Validators.required, Validators.minLength(8)]],
+ });
+
+ constructor(private fb: FormBuilder) {}
+
+ blurred() {
+ console.log('aaaaaaaaac');
+ console.log('aaaaaaaaac');
+ console.log('aaaaaaaaac');
+ console.log('aaaaaaaaac');
+ console.log('aaaaaaaaac');
+ console.log('aaaaaaaaac');
+ console.log('aaaaaaaaac');
+ }
+ get email(): FormControl {
+ return this.form.get('email') as FormControl;
+ }
+
+ get password(): FormControl {
+ return this.form.get('password') as FormControl;
+ }
+
+ onSubmit(_fg: FormGroup): void {
+ // do nothing
+ }
+}
diff --git a/apps/example-app-karma/src/app/issues/issue-373.spec.ts b/apps/example-app-karma/src/app/issues/issue-373.spec.ts
deleted file mode 100644
index cdbd0ccb..00000000
--- a/apps/example-app-karma/src/app/issues/issue-373.spec.ts
+++ /dev/null
@@ -1,69 +0,0 @@
-import { Component } from '@angular/core';
-import { FormBuilder, FormControl, FormGroup, Validators, ReactiveFormsModule } from '@angular/forms';
-import userEvent from '@testing-library/user-event';
-import { render, screen } from '@testing-library/angular';
-
-@Component({
- selector: 'app-login',
- template: `Login
-
- `,
-})
-class LoginComponent {
- form: FormGroup = this.fb.group({
- email: ['', [Validators.required]],
- password: ['', [Validators.required]],
- });
-
- constructor(private fb: FormBuilder) {}
-
- get email(): FormControl {
- return this.form.get('email') as FormControl;
- }
-
- get password(): FormControl {
- return this.form.get('password') as FormControl;
- }
-
- onSubmit(_fg: FormGroup): void {
- // do nothing
- }
-}
-
-describe('LoginComponent', () => {
- const setup = async () => {
- return render(LoginComponent, {
- imports: [ReactiveFormsModule],
- });
- };
-
- it('should create a component with inputs and a button to submit', async () => {
- await setup();
-
- expect(screen.getByRole('textbox', { name: 'email' })).toBeInTheDocument();
- expect(screen.getByLabelText('password')).toBeInTheDocument();
- expect(screen.getByRole('button', { name: 'submit' })).toBeInTheDocument();
- });
-
- it('should show a message required to password and login and a button must be disabled', async () => {
- await setup();
-
- await userEvent.click(screen.getByRole('textbox', { name: 'email' }));
- await userEvent.click(screen.getByLabelText('password'));
- await userEvent.tab();
- await userEvent.click(screen.getByRole('button', { name: 'submit' }));
-
- expect(screen.getAllByText(/required/i).length).toBe(2);
- expect(screen.getByRole('button', { name: 'submit' })).toBeDisabled();
- });
-});
diff --git a/apps/example-app-karma/src/app/issues/issue-222.spec.ts b/apps/example-app-karma/src/app/issues/rerender.spec.ts
similarity index 77%
rename from apps/example-app-karma/src/app/issues/issue-222.spec.ts
rename to apps/example-app-karma/src/app/issues/rerender.spec.ts
index 5da35d44..9b044d1f 100644
--- a/apps/example-app-karma/src/app/issues/issue-222.spec.ts
+++ b/apps/example-app-karma/src/app/issues/rerender.spec.ts
@@ -1,6 +1,6 @@
import { render, screen } from '@testing-library/angular';
-it('https://github.com/testing-library/angular-testing-library/issues/222 with rerender', async () => {
+it('can rerender component', async () => {
const { rerender } = await render(`Hello {{ name}}
`, {
componentProperties: {
name: 'Sarah',
diff --git a/apps/example-app-karma/src/assets/.gitkeep b/apps/example-app-karma/src/assets/.gitkeep
deleted file mode 100644
index e69de29b..00000000
diff --git a/apps/example-app-karma/src/environments/environment.prod.ts b/apps/example-app-karma/src/environments/environment.prod.ts
deleted file mode 100644
index c9669790..00000000
--- a/apps/example-app-karma/src/environments/environment.prod.ts
+++ /dev/null
@@ -1,3 +0,0 @@
-export const environment = {
- production: true,
-};
diff --git a/apps/example-app-karma/src/environments/environment.ts b/apps/example-app-karma/src/environments/environment.ts
deleted file mode 100644
index 64c3e6c7..00000000
--- a/apps/example-app-karma/src/environments/environment.ts
+++ /dev/null
@@ -1,15 +0,0 @@
-// This file can be replaced during build by using the `fileReplacements` array.
-// `ng build ---prod` replaces `environment.ts` with `environment.prod.ts`.
-// The list of file replacements can be found in `workspace.json`.
-
-export const environment = {
- production: false,
-};
-
-/*
- * In development mode, to ignore zone related error stack frames such as
- * `zone.run`, `zoneDelegate.invokeTask` for easier debugging, you can
- * import the following file, but please comment it out in production mode
- * because it will have performance impact when throw error
- */
-// import 'zone.js/plugins/zone-error'; // Included with Angular CLI.
diff --git a/apps/example-app-karma/src/favicon.ico b/apps/example-app-karma/src/favicon.ico
deleted file mode 100644
index 8081c7ce..00000000
Binary files a/apps/example-app-karma/src/favicon.ico and /dev/null differ
diff --git a/apps/example-app-karma/src/index.html b/apps/example-app-karma/src/index.html
deleted file mode 100644
index 930133fd..00000000
--- a/apps/example-app-karma/src/index.html
+++ /dev/null
@@ -1,14 +0,0 @@
-
-
-
-
- AngularTestingLibraryApp
-
-
-
-
-
-
-
-
-
diff --git a/apps/example-app-karma/src/main.ts b/apps/example-app-karma/src/main.ts
deleted file mode 100644
index 741c9eb8..00000000
--- a/apps/example-app-karma/src/main.ts
+++ /dev/null
@@ -1,13 +0,0 @@
-import { enableProdMode } from '@angular/core';
-import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
-
-import { AppModule } from './app/app.module';
-import { environment } from './environments/environment';
-
-if (environment.production) {
- enableProdMode();
-}
-
-platformBrowserDynamic()
- .bootstrapModule(AppModule)
- .catch((err) => console.log(err));
diff --git a/apps/example-app-karma/src/polyfills.ts b/apps/example-app-karma/src/polyfills.ts
deleted file mode 100644
index f84fd8a6..00000000
--- a/apps/example-app-karma/src/polyfills.ts
+++ /dev/null
@@ -1,65 +0,0 @@
-/**
- * This file includes polyfills needed by Angular and is loaded before the app.
- * You can add your own extra polyfills to this file.
- *
- * This file is divided into 2 sections:
- * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers.
- * 2. Application imports. Files imported after ZoneJS that should be loaded before your main
- * file.
- *
- * The current setup is for so-called "evergreen" browsers; the last versions of browsers that
- * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera),
- * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile.
- *
- * Learn more in https://angular.io/docs/ts/latest/guide/browser-support.html
- */
-
-/** *************************************************************************************************
- * BROWSER POLYFILLS
- */
-
-/** IE9, IE10 and IE11 requires all of the following polyfills. **/
-// import 'core-js/es6/symbol';
-// import 'core-js/es6/object';
-// import 'core-js/es6/function';
-// import 'core-js/es6/parse-int';
-// import 'core-js/es6/parse-float';
-// import 'core-js/es6/number';
-// import 'core-js/es6/math';
-// import 'core-js/es6/string';
-// import 'core-js/es6/date';
-// import 'core-js/es6/array';
-// import 'core-js/es6/regexp';
-// import 'core-js/es6/map';
-// import 'core-js/es6/weak-map';
-// import 'core-js/es6/set';
-
-/** IE10 and IE11 requires the following for the Reflect API. */
-// import 'core-js/es6/reflect';
-
-/** Evergreen browsers require these. **/
-// Used for reflect-metadata in JIT. If you use AOT (and only Angular decorators), you can remove.
-
-/**
- * By default, zone.js will patch all possible macroTask and DomEvents
- * user can disable parts of macroTask/DomEvents patch by setting following flags
- */
-
-// (window as any).__Zone_disable_requestAnimationFrame = true; // disable patch requestAnimationFrame
-// (window as any).__Zone_disable_on_property = true; // disable patch onProperty such as onclick
-// (window as any).__zone_symbol__BLACK_LISTED_EVENTS = ['scroll', 'mousemove']; // disable patch specified eventNames
-
-/*
- * in IE/Edge developer tools, the addEventListener will also be wrapped by zone.js
- * with the following flag, it will bypass `zone.js` patch for IE/Edge
- */
-// (window as any).__Zone_enable_cross_context_check = true;
-
-/** *************************************************************************************************
- * Zone JS is required by default for Angular itself.
- */
-import 'zone.js'; // Included with Angular CLI.
-
-/** *************************************************************************************************
- * APPLICATION IMPORTS
- */
diff --git a/apps/example-app-karma/src/test.ts b/apps/example-app-karma/src/test.ts
index 60544d54..ad4ed9e4 100644
--- a/apps/example-app-karma/src/test.ts
+++ b/apps/example-app-karma/src/test.ts
@@ -1,4 +1,4 @@
-// This file is required by karma.conf.js and loads recursively all the .spec and framework files
+import 'zone.js';
import 'zone.js/dist/zone-testing';
import { getTestBed } from '@angular/core/testing';
import { BrowserDynamicTestingModule, platformBrowserDynamicTesting } from '@angular/platform-browser-dynamic/testing';
diff --git a/apps/example-app-karma/tsconfig.app.json b/apps/example-app-karma/tsconfig.app.json
index 79a77d1b..46150c25 100644
--- a/apps/example-app-karma/tsconfig.app.json
+++ b/apps/example-app-karma/tsconfig.app.json
@@ -7,7 +7,7 @@
"target": "ES2022",
"useDefineForClassFields": false
},
- "files": ["src/main.ts", "src/polyfills.ts"],
+ "files": ["src/main.ts"],
"include": ["src/**/*.d.ts"],
"exclude": ["**/*.test.ts", "**/*.spec.ts"]
}
diff --git a/apps/example-app-karma/tsconfig.spec.json b/apps/example-app-karma/tsconfig.spec.json
index ff71a7ee..0f4baec3 100644
--- a/apps/example-app-karma/tsconfig.spec.json
+++ b/apps/example-app-karma/tsconfig.spec.json
@@ -6,6 +6,6 @@
"target": "ES2022",
"useDefineForClassFields": false
},
- "files": ["src/test.ts", "src/polyfills.ts"],
+ "files": ["src/test.ts"],
"include": ["**/*.spec.ts", "**/*.d.ts"]
}
diff --git a/apps/example-app/project.json b/apps/example-app/project.json
index b3b1667d..1c1e4ede 100644
--- a/apps/example-app/project.json
+++ b/apps/example-app/project.json
@@ -27,12 +27,6 @@
"maximumWarning": "6kb"
}
],
- "fileReplacements": [
- {
- "replace": "apps/example-app/src/environments/environment.ts",
- "with": "apps/example-app/src/environments/environment.prod.ts"
- }
- ],
"outputHashing": "all"
},
"development": {
diff --git a/apps/example-app/src/app/app-routing.module.ts b/apps/example-app/src/app/app-routing.module.ts
deleted file mode 100644
index 6a9f0b9e..00000000
--- a/apps/example-app/src/app/app-routing.module.ts
+++ /dev/null
@@ -1,101 +0,0 @@
-import { NgModule } from '@angular/core';
-import { Routes, RouterModule } from '@angular/router';
-
-import { SingleComponent } from './examples/00-single-component';
-import { NestedContainerComponent } from './examples/01-nested-component';
-import { InputOutputComponent } from './examples/02-input-output';
-import { FormsComponent } from './examples/03-forms';
-import { MaterialFormsComponent } from './examples/04-forms-with-material';
-import { ComponentWithProviderComponent } from './examples/05-component-provider';
-import { WithNgRxStoreComponent } from './examples/06-with-ngrx-store';
-import { WithNgRxMockStoreComponent } from './examples/07-with-ngrx-mock-store';
-import { RootComponent, DetailComponent, HiddenDetailComponent } from './examples/09-router';
-
-export const examples = [
- {
- path: 'single-component',
- component: SingleComponent,
- data: {
- name: 'Single component',
- },
- },
- {
- path: 'nested-component',
- component: NestedContainerComponent,
- data: {
- name: 'Nested components',
- },
- },
- {
- path: 'input-output',
- component: InputOutputComponent,
- data: {
- name: 'Input and Output',
- },
- },
- {
- path: 'forms',
- component: FormsComponent,
- data: {
- name: 'Form',
- },
- },
- {
- path: 'forms-material',
- component: MaterialFormsComponent,
- data: {
- name: 'Material form',
- },
- },
- {
- path: 'component-with-provider',
- component: ComponentWithProviderComponent,
- data: {
- name: 'With provider',
- },
- },
- {
- path: 'with-ngrx-store',
- component: WithNgRxStoreComponent,
- data: {
- name: 'With NgRx Store',
- },
- },
- {
- path: 'with-ngrx-mock-store',
- component: WithNgRxMockStoreComponent,
- data: {
- name: 'With NgRx MockStore',
- },
- },
- {
- path: 'with-router',
- component: RootComponent,
- data: {
- name: 'Router',
- },
- children: [
- {
- path: 'detail/:id',
- component: DetailComponent,
- },
- {
- path: 'hidden-detail',
- component: HiddenDetailComponent,
- },
- ],
- },
-];
-
-export const routes: Routes = [
- {
- path: '',
- children: examples,
- },
-];
-
-@NgModule({
- imports: [RouterModule.forRoot(routes, {})],
- exports: [RouterModule],
-})
-export class AppRoutingModule {}
diff --git a/apps/example-app/src/app/app.component.css b/apps/example-app/src/app/app.component.css
deleted file mode 100644
index 6d3bc67b..00000000
--- a/apps/example-app/src/app/app.component.css
+++ /dev/null
@@ -1,17 +0,0 @@
-.container {
- display: flex;
- flex-direction: column;
- position: absolute;
- top: 0;
- bottom: 0;
- left: 0;
- right: 0;
-}
-
-.sidenav {
- flex: 1;
-}
-
-.sidenav-container {
- padding: 10px;
-}
diff --git a/apps/example-app/src/app/app.component.html b/apps/example-app/src/app/app.component.html
deleted file mode 100644
index 04b5f476..00000000
--- a/apps/example-app/src/app/app.component.html
+++ /dev/null
@@ -1,17 +0,0 @@
-
diff --git a/apps/example-app/src/app/app.component.ts b/apps/example-app/src/app/app.component.ts
deleted file mode 100644
index 5b20ef63..00000000
--- a/apps/example-app/src/app/app.component.ts
+++ /dev/null
@@ -1,11 +0,0 @@
-import { Component } from '@angular/core';
-import { examples as routes } from './app-routing.module';
-
-@Component({
- selector: 'app-root',
- templateUrl: './app.component.html',
- styleUrls: ['app.component.css'],
-})
-export class AppComponent {
- examples = routes;
-}
diff --git a/apps/example-app/src/app/app.module.ts b/apps/example-app/src/app/app.module.ts
deleted file mode 100644
index cb95434f..00000000
--- a/apps/example-app/src/app/app.module.ts
+++ /dev/null
@@ -1,65 +0,0 @@
-import { BrowserModule } from '@angular/platform-browser';
-import { BrowserAnimationsModule } from '@angular/platform-browser/animations';
-import { NgModule } from '@angular/core';
-import { ReactiveFormsModule } from '@angular/forms';
-import { StoreModule } from '@ngrx/store';
-
-import { AppRoutingModule } from './app-routing.module';
-import { MaterialModule } from './material.module';
-import { MatIconModule } from '@angular/material/icon';
-import { MatListModule } from '@angular/material/list';
-import { MatSidenavModule } from '@angular/material/sidenav';
-import { MatToolbarModule } from '@angular/material/toolbar';
-
-import { AppComponent } from './app.component';
-import { SingleComponent } from './examples/00-single-component';
-import { NestedButtonComponent, NestedValueComponent, NestedContainerComponent } from './examples/01-nested-component';
-import { InputOutputComponent } from './examples/02-input-output';
-import { FormsComponent } from './examples/03-forms';
-import { MaterialFormsComponent } from './examples/04-forms-with-material';
-import { ComponentWithProviderComponent } from './examples/05-component-provider';
-import { WithNgRxStoreComponent, reducer } from './examples/06-with-ngrx-store';
-import { WithNgRxMockStoreComponent } from './examples/07-with-ngrx-mock-store';
-import { RootComponent, DetailComponent, HiddenDetailComponent } from './examples/09-router';
-import { ScrollingModule } from '@angular/cdk/scrolling';
-
-function reducerItems() {
- return ['One', 'Two', 'Three'];
-}
-
-@NgModule({
- declarations: [
- AppComponent,
- SingleComponent,
- NestedButtonComponent,
- NestedValueComponent,
- NestedContainerComponent,
- InputOutputComponent,
- FormsComponent,
- MaterialFormsComponent,
- ComponentWithProviderComponent,
- WithNgRxStoreComponent,
- WithNgRxMockStoreComponent,
- RootComponent,
- DetailComponent,
- HiddenDetailComponent,
- ],
- imports: [
- BrowserModule,
- ReactiveFormsModule,
- BrowserAnimationsModule,
- MaterialModule,
- MatIconModule,
- MatListModule,
- MatSidenavModule,
- MatToolbarModule,
- AppRoutingModule,
- ScrollingModule,
- StoreModule.forRoot({
- value: reducer,
- items: reducerItems,
- }),
- ],
- bootstrap: [AppComponent],
-})
-export class AppModule {}
diff --git a/apps/example-app/src/app/examples/00-single-component.ts b/apps/example-app/src/app/examples/00-single-component.ts
index 25001036..7c132c2f 100644
--- a/apps/example-app/src/app/examples/00-single-component.ts
+++ b/apps/example-app/src/app/examples/00-single-component.ts
@@ -2,6 +2,7 @@ import { Component } from '@angular/core';
@Component({
selector: 'app-fixture',
+ standalone: true,
template: `
{{ value }}
diff --git a/apps/example-app/src/app/examples/01-nested-component.spec.ts b/apps/example-app/src/app/examples/01-nested-component.spec.ts
index 751d1c47..dfa3fe3f 100644
--- a/apps/example-app/src/app/examples/01-nested-component.spec.ts
+++ b/apps/example-app/src/app/examples/01-nested-component.spec.ts
@@ -1,13 +1,11 @@
import { render, screen } from '@testing-library/angular';
import userEvent from '@testing-library/user-event';
-import { NestedButtonComponent, NestedValueComponent, NestedContainerComponent } from './01-nested-component';
+import { NestedContainerComponent } from './01-nested-component';
test('renders the current value and can increment and decrement', async () => {
const user = userEvent.setup();
- await render(NestedContainerComponent, {
- declarations: [NestedButtonComponent, NestedValueComponent],
- });
+ await render(NestedContainerComponent);
const incrementControl = screen.getByRole('button', { name: /increment/i });
const decrementControl = screen.getByRole('button', { name: /decrement/i });
diff --git a/apps/example-app/src/app/examples/01-nested-component.ts b/apps/example-app/src/app/examples/01-nested-component.ts
index 51087b44..645ce966 100644
--- a/apps/example-app/src/app/examples/01-nested-component.ts
+++ b/apps/example-app/src/app/examples/01-nested-component.ts
@@ -1,6 +1,7 @@
import { Component, Input, Output, EventEmitter } from '@angular/core';
@Component({
+ standalone: true,
selector: 'app-button',
template: ' ',
})
@@ -10,6 +11,7 @@ export class NestedButtonComponent {
}
@Component({
+ standalone: true,
selector: 'app-value',
template: ' {{ value }} ',
})
@@ -18,12 +20,14 @@ export class NestedValueComponent {
}
@Component({
+ standalone: true,
selector: 'app-fixture',
template: `
-
-
-
+
+
+
`,
+ imports: [NestedButtonComponent, NestedValueComponent],
})
export class NestedContainerComponent {
value = 0;
diff --git a/apps/example-app/src/app/examples/02-input-output.spec.ts b/apps/example-app/src/app/examples/02-input-output.spec.ts
index 93edee4d..c193d3e5 100644
--- a/apps/example-app/src/app/examples/02-input-output.spec.ts
+++ b/apps/example-app/src/app/examples/02-input-output.spec.ts
@@ -38,8 +38,8 @@ test('is possible to set input and listen for output with the template syntax',
const user = userEvent.setup();
const sendSpy = jest.fn();
- await render('', {
- declarations: [InputOutputComponent],
+ await render('', {
+ imports: [InputOutputComponent],
componentProperties: {
sendValue: sendSpy,
},
diff --git a/apps/example-app/src/app/examples/02-input-output.ts b/apps/example-app/src/app/examples/02-input-output.ts
index a7ef9ce4..5bf70abb 100644
--- a/apps/example-app/src/app/examples/02-input-output.ts
+++ b/apps/example-app/src/app/examples/02-input-output.ts
@@ -1,6 +1,7 @@
import { Component, EventEmitter, Input, Output } from '@angular/core';
@Component({
+ standalone: true,
selector: 'app-fixture',
template: `
diff --git a/apps/example-app/src/app/examples/03-forms.ts b/apps/example-app/src/app/examples/03-forms.ts
index cbf0a316..49756dca 100644
--- a/apps/example-app/src/app/examples/03-forms.ts
+++ b/apps/example-app/src/app/examples/03-forms.ts
@@ -1,8 +1,11 @@
+import { NgForOf, NgIf } from '@angular/common';
import { Component } from '@angular/core';
-import { FormBuilder, Validators } from '@angular/forms';
+import { FormBuilder, ReactiveFormsModule, Validators } from '@angular/forms';
@Component({
+ standalone: true,
selector: 'app-fixture',
+ imports: [ReactiveFormsModule, NgForOf, NgIf],
template: `