- @if (step !== 100) {
+ [style.height.%]="100 - step()">
+ @if (step() !== 100) {
Who is here?
@@ -31,5 +31,5 @@ import { Component, Input } from '@angular/core';
styleUrls: [`unknown-person.component.css`],
})
export class UnknownPersonComponent {
- @Input({ required: true }) step!: number;
+ step = input.required
();
}
diff --git a/apps/performance/40-web-workers/tsconfig.app.json b/apps/performance/40-web-workers/tsconfig.app.json
index 58220429a..8b5631268 100644
--- a/apps/performance/40-web-workers/tsconfig.app.json
+++ b/apps/performance/40-web-workers/tsconfig.app.json
@@ -2,7 +2,8 @@
"extends": "./tsconfig.json",
"compilerOptions": {
"outDir": "../../../dist/out-tsc",
- "types": []
+ "types": [],
+ "moduleResolution": "bundler"
},
"files": ["src/main.ts"],
"include": ["src/**/*.d.ts"],
diff --git a/apps/rxjs/11-high-order-operator-bug/project.json b/apps/rxjs/11-high-order-operator-bug/project.json
index e8e3f2045..2ab592032 100644
--- a/apps/rxjs/11-high-order-operator-bug/project.json
+++ b/apps/rxjs/11-high-order-operator-bug/project.json
@@ -61,7 +61,8 @@
"buildTarget": "rxjs-high-order-operator-bug:build:development"
}
},
- "defaultConfiguration": "development"
+ "defaultConfiguration": "development",
+ "continuous": true
},
"extract-i18n": {
"executor": "@angular-devkit/build-angular:extract-i18n",
diff --git a/apps/rxjs/11-high-order-operator-bug/tsconfig.app.json b/apps/rxjs/11-high-order-operator-bug/tsconfig.app.json
index 741a69b9f..44ab2b22f 100644
--- a/apps/rxjs/11-high-order-operator-bug/tsconfig.app.json
+++ b/apps/rxjs/11-high-order-operator-bug/tsconfig.app.json
@@ -2,7 +2,8 @@
"extends": "./tsconfig.json",
"compilerOptions": {
"outDir": "../../../dist/out-tsc",
- "types": []
+ "types": [],
+ "moduleResolution": "bundler"
},
"files": ["src/main.ts"],
"include": ["src/**/*.d.ts"],
diff --git a/apps/rxjs/14-race-condition/cypress.config.ts b/apps/rxjs/14-race-condition/cypress.config.ts
index 1abef9c0c..3738464ee 100644
--- a/apps/rxjs/14-race-condition/cypress.config.ts
+++ b/apps/rxjs/14-race-condition/cypress.config.ts
@@ -2,5 +2,7 @@ import { nxComponentTestingPreset } from '@nx/angular/plugins/component-testing'
import { defineConfig } from 'cypress';
export default defineConfig({
- component: nxComponentTestingPreset(__filename),
+ component: {
+ ...nxComponentTestingPreset(__filename),
+ },
});
diff --git a/apps/rxjs/14-race-condition/project.json b/apps/rxjs/14-race-condition/project.json
index f84ccf155..c5191f620 100644
--- a/apps/rxjs/14-race-condition/project.json
+++ b/apps/rxjs/14-race-condition/project.json
@@ -60,7 +60,8 @@
"buildTarget": "rxjs-race-condition:build:development"
}
},
- "defaultConfiguration": "development"
+ "defaultConfiguration": "development",
+ "continuous": true
},
"extract-i18n": {
"executor": "@angular-devkit/build-angular:extract-i18n",
@@ -78,6 +79,15 @@
"coverage": true
}
}
+ },
+ "component-test": {
+ "executor": "@nx/cypress:cypress",
+ "options": {
+ "cypressConfig": "apps/rxjs/14-race-condition/cypress.config.ts",
+ "testingType": "component",
+ "skipServe": true,
+ "devServerTarget": "testing-router:build"
+ }
}
}
}
diff --git a/apps/rxjs/14-race-condition/src/app/app.component.ts b/apps/rxjs/14-race-condition/src/app/app.component.ts
index a7eb77710..a23c31f08 100644
--- a/apps/rxjs/14-race-condition/src/app/app.component.ts
+++ b/apps/rxjs/14-race-condition/src/app/app.component.ts
@@ -10,7 +10,6 @@ import { TopicModalComponent } from './topic-dialog.component';
import { TopicService, TopicType } from './topic.service';
@Component({
- standalone: true,
selector: 'app-root',
template: `
Open Topic
diff --git a/apps/rxjs/14-race-condition/src/app/topic-dialog.component.ts b/apps/rxjs/14-race-condition/src/app/topic-dialog.component.ts
index e01a69a01..67d8ec29b 100644
--- a/apps/rxjs/14-race-condition/src/app/topic-dialog.component.ts
+++ b/apps/rxjs/14-race-condition/src/app/topic-dialog.component.ts
@@ -1,4 +1,3 @@
-import { NgFor } from '@angular/common';
import { ChangeDetectionStrategy, Component, inject } from '@angular/core';
import { MatButtonModule } from '@angular/material/button';
import { MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';
@@ -8,16 +7,18 @@ import { MAT_DIALOG_DATA, MatDialogModule } from '@angular/material/dialog';
Show all Topics
-
- {{ topic }}
-
+ @for (topic of data.topics; track $index) {
+
+ {{ topic }}
+
+ }
Close
`,
- imports: [MatDialogModule, MatButtonModule, NgFor],
+ imports: [MatDialogModule, MatButtonModule],
changeDetection: ChangeDetectionStrategy.OnPush,
})
export class TopicModalComponent {
diff --git a/apps/rxjs/14-race-condition/tsconfig.app.json b/apps/rxjs/14-race-condition/tsconfig.app.json
index 01a02ed77..5fdad8685 100644
--- a/apps/rxjs/14-race-condition/tsconfig.app.json
+++ b/apps/rxjs/14-race-condition/tsconfig.app.json
@@ -2,7 +2,8 @@
"extends": "./tsconfig.json",
"compilerOptions": {
"outDir": "../../../dist/out-tsc",
- "types": []
+ "types": [],
+ "moduleResolution": "bundler"
},
"files": ["src/main.ts"],
"include": ["src/**/*.d.ts"],
diff --git a/apps/rxjs/14-race-condition/tsconfig.json b/apps/rxjs/14-race-condition/tsconfig.json
index 8a0cb05fc..3879b94cd 100644
--- a/apps/rxjs/14-race-condition/tsconfig.json
+++ b/apps/rxjs/14-race-condition/tsconfig.json
@@ -22,7 +22,7 @@
"path": "./tsconfig.editor.json"
},
{
- "path": "./cypress/tsconfig.base.json"
+ "path": "./cypress/tsconfig.json"
}
],
"extends": "../../../tsconfig.base.json",
diff --git a/apps/rxjs/38-catch-error/project.json b/apps/rxjs/38-catch-error/project.json
index a655389f3..9c2ad7cb9 100644
--- a/apps/rxjs/38-catch-error/project.json
+++ b/apps/rxjs/38-catch-error/project.json
@@ -59,7 +59,8 @@
"buildTarget": "rxjs-catch-error:build:development"
}
},
- "defaultConfiguration": "development"
+ "defaultConfiguration": "development",
+ "continuous": true
},
"extract-i18n": {
"executor": "@angular-devkit/build-angular:extract-i18n",
diff --git a/apps/rxjs/38-catch-error/tsconfig.app.json b/apps/rxjs/38-catch-error/tsconfig.app.json
index 58220429a..8b5631268 100644
--- a/apps/rxjs/38-catch-error/tsconfig.app.json
+++ b/apps/rxjs/38-catch-error/tsconfig.app.json
@@ -2,7 +2,8 @@
"extends": "./tsconfig.json",
"compilerOptions": {
"outDir": "../../../dist/out-tsc",
- "types": []
+ "types": [],
+ "moduleResolution": "bundler"
},
"files": ["src/main.ts"],
"include": ["src/**/*.d.ts"],
diff --git a/apps/rxjs/49-hold-to-save-button/project.json b/apps/rxjs/49-hold-to-save-button/project.json
index 7b34db2c9..f4e2e33c4 100644
--- a/apps/rxjs/49-hold-to-save-button/project.json
+++ b/apps/rxjs/49-hold-to-save-button/project.json
@@ -57,7 +57,8 @@
"buildTarget": "rxjs-hold-to-save-button:build:development"
}
},
- "defaultConfiguration": "development"
+ "defaultConfiguration": "development",
+ "continuous": true
},
"extract-i18n": {
"executor": "@angular-devkit/build-angular:extract-i18n",
diff --git a/apps/rxjs/49-hold-to-save-button/tsconfig.app.json b/apps/rxjs/49-hold-to-save-button/tsconfig.app.json
index 58220429a..8b5631268 100644
--- a/apps/rxjs/49-hold-to-save-button/tsconfig.app.json
+++ b/apps/rxjs/49-hold-to-save-button/tsconfig.app.json
@@ -2,7 +2,8 @@
"extends": "./tsconfig.json",
"compilerOptions": {
"outDir": "../../../dist/out-tsc",
- "types": []
+ "types": [],
+ "moduleResolution": "bundler"
},
"files": ["src/main.ts"],
"include": ["src/**/*.d.ts"],
diff --git a/apps/signal/30-interop-rxjs-signal/project.json b/apps/signal/30-interop-rxjs-signal/project.json
index 0407655ee..b03dd4c15 100644
--- a/apps/signal/30-interop-rxjs-signal/project.json
+++ b/apps/signal/30-interop-rxjs-signal/project.json
@@ -62,7 +62,8 @@
"buildTarget": "signal-interop-rxjs-signal:build:development"
}
},
- "defaultConfiguration": "development"
+ "defaultConfiguration": "development",
+ "continuous": true
},
"extract-i18n": {
"executor": "@angular-devkit/build-angular:extract-i18n",
diff --git a/apps/signal/30-interop-rxjs-signal/tsconfig.app.json b/apps/signal/30-interop-rxjs-signal/tsconfig.app.json
index 58220429a..8b5631268 100644
--- a/apps/signal/30-interop-rxjs-signal/tsconfig.app.json
+++ b/apps/signal/30-interop-rxjs-signal/tsconfig.app.json
@@ -2,7 +2,8 @@
"extends": "./tsconfig.json",
"compilerOptions": {
"outDir": "../../../dist/out-tsc",
- "types": []
+ "types": [],
+ "moduleResolution": "bundler"
},
"files": ["src/main.ts"],
"include": ["src/**/*.d.ts"],
diff --git a/apps/signal/43-signal-input/project.json b/apps/signal/43-signal-input/project.json
index 674aed1a3..0a1832ffb 100644
--- a/apps/signal/43-signal-input/project.json
+++ b/apps/signal/43-signal-input/project.json
@@ -57,7 +57,8 @@
"buildTarget": "signal-signal-input:build:development"
}
},
- "defaultConfiguration": "development"
+ "defaultConfiguration": "development",
+ "continuous": true
},
"extract-i18n": {
"executor": "@angular-devkit/build-angular:extract-i18n",
diff --git a/apps/signal/43-signal-input/tsconfig.app.json b/apps/signal/43-signal-input/tsconfig.app.json
index 58220429a..8b5631268 100644
--- a/apps/signal/43-signal-input/tsconfig.app.json
+++ b/apps/signal/43-signal-input/tsconfig.app.json
@@ -2,7 +2,8 @@
"extends": "./tsconfig.json",
"compilerOptions": {
"outDir": "../../../dist/out-tsc",
- "types": []
+ "types": [],
+ "moduleResolution": "bundler"
},
"files": ["src/main.ts"],
"include": ["src/**/*.d.ts"],
diff --git a/apps/signal/50-bug-in-effect/project.json b/apps/signal/50-bug-in-effect/project.json
index 12a9bb47a..7d40e2caa 100644
--- a/apps/signal/50-bug-in-effect/project.json
+++ b/apps/signal/50-bug-in-effect/project.json
@@ -57,7 +57,8 @@
"buildTarget": "signal-bug-in-effect:build:development"
}
},
- "defaultConfiguration": "development"
+ "defaultConfiguration": "development",
+ "continuous": true
},
"extract-i18n": {
"executor": "@angular-devkit/build-angular:extract-i18n",
diff --git a/apps/signal/50-bug-in-effect/tsconfig.app.json b/apps/signal/50-bug-in-effect/tsconfig.app.json
index 58220429a..8b5631268 100644
--- a/apps/signal/50-bug-in-effect/tsconfig.app.json
+++ b/apps/signal/50-bug-in-effect/tsconfig.app.json
@@ -2,7 +2,8 @@
"extends": "./tsconfig.json",
"compilerOptions": {
"outDir": "../../../dist/out-tsc",
- "types": []
+ "types": [],
+ "moduleResolution": "bundler"
},
"files": ["src/main.ts"],
"include": ["src/**/*.d.ts"],
diff --git a/apps/signal/51-function-call-effect/project.json b/apps/signal/51-function-call-effect/project.json
index 3b3a4f8ae..71e6f233d 100644
--- a/apps/signal/51-function-call-effect/project.json
+++ b/apps/signal/51-function-call-effect/project.json
@@ -57,7 +57,8 @@
"buildTarget": "signal-function-call-effect:build:development"
}
},
- "defaultConfiguration": "development"
+ "defaultConfiguration": "development",
+ "continuous": true
},
"extract-i18n": {
"executor": "@angular-devkit/build-angular:extract-i18n",
diff --git a/apps/signal/51-function-call-effect/tsconfig.app.json b/apps/signal/51-function-call-effect/tsconfig.app.json
index 58220429a..8b5631268 100644
--- a/apps/signal/51-function-call-effect/tsconfig.app.json
+++ b/apps/signal/51-function-call-effect/tsconfig.app.json
@@ -2,7 +2,8 @@
"extends": "./tsconfig.json",
"compilerOptions": {
"outDir": "../../../dist/out-tsc",
- "types": []
+ "types": [],
+ "moduleResolution": "bundler"
},
"files": ["src/main.ts"],
"include": ["src/**/*.d.ts"],
diff --git a/apps/signal/53-big-signal-performance/project.json b/apps/signal/53-big-signal-performance/project.json
index 88363564f..9795c4032 100644
--- a/apps/signal/53-big-signal-performance/project.json
+++ b/apps/signal/53-big-signal-performance/project.json
@@ -57,7 +57,8 @@
"buildTarget": "signal-big-signal-performance:build:development"
}
},
- "defaultConfiguration": "development"
+ "defaultConfiguration": "development",
+ "continuous": true
},
"extract-i18n": {
"executor": "@angular-devkit/build-angular:extract-i18n",
diff --git a/apps/signal/53-big-signal-performance/tsconfig.app.json b/apps/signal/53-big-signal-performance/tsconfig.app.json
index 58220429a..8b5631268 100644
--- a/apps/signal/53-big-signal-performance/tsconfig.app.json
+++ b/apps/signal/53-big-signal-performance/tsconfig.app.json
@@ -2,7 +2,8 @@
"extends": "./tsconfig.json",
"compilerOptions": {
"outDir": "../../../dist/out-tsc",
- "types": []
+ "types": [],
+ "moduleResolution": "bundler"
},
"files": ["src/main.ts"],
"include": ["src/**/*.d.ts"],
diff --git a/apps/signal/54-pipe-observable-to-signal/project.json b/apps/signal/54-pipe-observable-to-signal/project.json
index 47ab2b9ae..1f95f6036 100644
--- a/apps/signal/54-pipe-observable-to-signal/project.json
+++ b/apps/signal/54-pipe-observable-to-signal/project.json
@@ -57,7 +57,8 @@
"buildTarget": "signal-pipe-observable-to-signal:build:development"
}
},
- "defaultConfiguration": "development"
+ "defaultConfiguration": "development",
+ "continuous": true
},
"extract-i18n": {
"executor": "@angular-devkit/build-angular:extract-i18n",
diff --git a/apps/signal/54-pipe-observable-to-signal/src/app/currency.pipe.ts b/apps/signal/54-pipe-observable-to-signal/src/app/currency.pipe.ts
index e3cc993f4..411243b81 100644
--- a/apps/signal/54-pipe-observable-to-signal/src/app/currency.pipe.ts
+++ b/apps/signal/54-pipe-observable-to-signal/src/app/currency.pipe.ts
@@ -4,7 +4,6 @@ import { CurrencyService } from './currency.service';
@Pipe({
name: 'currency',
- standalone: true,
})
export class CurrencyPipe implements PipeTransform {
currencyService = inject(CurrencyService);
diff --git a/apps/signal/54-pipe-observable-to-signal/tsconfig.app.json b/apps/signal/54-pipe-observable-to-signal/tsconfig.app.json
index 58220429a..8b5631268 100644
--- a/apps/signal/54-pipe-observable-to-signal/tsconfig.app.json
+++ b/apps/signal/54-pipe-observable-to-signal/tsconfig.app.json
@@ -2,7 +2,8 @@
"extends": "./tsconfig.json",
"compilerOptions": {
"outDir": "../../../dist/out-tsc",
- "types": []
+ "types": [],
+ "moduleResolution": "bundler"
},
"files": ["src/main.ts"],
"include": ["src/**/*.d.ts"],
diff --git a/apps/signal/56-forms-and-signal/project.json b/apps/signal/56-forms-and-signal/project.json
index d825b063c..596afbb32 100644
--- a/apps/signal/56-forms-and-signal/project.json
+++ b/apps/signal/56-forms-and-signal/project.json
@@ -59,7 +59,8 @@
"buildTarget": "signal-forms-and-signal:build:development"
}
},
- "defaultConfiguration": "development"
+ "defaultConfiguration": "development",
+ "continuous": true
},
"extract-i18n": {
"executor": "@angular-devkit/build-angular:extract-i18n",
diff --git a/apps/signal/56-forms-and-signal/tsconfig.app.json b/apps/signal/56-forms-and-signal/tsconfig.app.json
index 58220429a..8b5631268 100644
--- a/apps/signal/56-forms-and-signal/tsconfig.app.json
+++ b/apps/signal/56-forms-and-signal/tsconfig.app.json
@@ -2,7 +2,8 @@
"extends": "./tsconfig.json",
"compilerOptions": {
"outDir": "../../../dist/out-tsc",
- "types": []
+ "types": [],
+ "moduleResolution": "bundler"
},
"files": ["src/main.ts"],
"include": ["src/**/*.d.ts"],
diff --git a/apps/testing/17-router/cypress.config.ts b/apps/testing/17-router/cypress.config.ts
index 1abef9c0c..3738464ee 100644
--- a/apps/testing/17-router/cypress.config.ts
+++ b/apps/testing/17-router/cypress.config.ts
@@ -2,5 +2,7 @@ import { nxComponentTestingPreset } from '@nx/angular/plugins/component-testing'
import { defineConfig } from 'cypress';
export default defineConfig({
- component: nxComponentTestingPreset(__filename),
+ component: {
+ ...nxComponentTestingPreset(__filename),
+ },
});
diff --git a/apps/testing/17-router/project.json b/apps/testing/17-router/project.json
index 44c7a2b18..dba3c0666 100644
--- a/apps/testing/17-router/project.json
+++ b/apps/testing/17-router/project.json
@@ -60,7 +60,8 @@
"buildTarget": "testing-router:build:development"
}
},
- "defaultConfiguration": "development"
+ "defaultConfiguration": "development",
+ "continuous": true
},
"extract-i18n": {
"executor": "@angular-devkit/build-angular:extract-i18n",
diff --git a/apps/testing/17-router/src/app/no-book-search.component.ts b/apps/testing/17-router/src/app/no-book-search.component.ts
index 17d6b97d7..d16c7478d 100644
--- a/apps/testing/17-router/src/app/no-book-search.component.ts
+++ b/apps/testing/17-router/src/app/no-book-search.component.ts
@@ -1,7 +1,6 @@
import { ChangeDetectionStrategy, Component } from '@angular/core';
@Component({
- standalone: true,
template: `
No book found for this search
`,
diff --git a/apps/testing/17-router/src/app/search.component.ts b/apps/testing/17-router/src/app/search.component.ts
index 9027c0cfe..b35db308c 100644
--- a/apps/testing/17-router/src/app/search.component.ts
+++ b/apps/testing/17-router/src/app/search.component.ts
@@ -1,11 +1,10 @@
-import { NgFor, NgIf } from '@angular/common';
import { ChangeDetectionStrategy, Component } from '@angular/core';
import { FormControl, ReactiveFormsModule, Validators } from '@angular/forms';
-import { RouterLink } from '@angular/router';
+import { RouterLink, RouterLinkActive } from '@angular/router';
import { availableBooks } from './book.model';
@Component({
- imports: [ReactiveFormsModule, RouterLink, NgFor, NgIf],
+ imports: [ReactiveFormsModule, RouterLink, RouterLinkActive],
styles: [
`
:host {
@@ -38,9 +37,9 @@ import { availableBooks } from './book.model';
name="bookName"
[formControl]="searchBook"
required />
-
- Search criteria is required!
-
+ @if (searchBook.errors) {
+ Search criteria is required!
+ }
List of books available:
- {{ book.name }} by {{ book.author }}
+ @for (book of books; track $index) {
+ {{ book.name }} by {{ book.author }}
+ }
`,
diff --git a/apps/testing/17-router/src/app/shelf.component.ts b/apps/testing/17-router/src/app/shelf.component.ts
index 63cddfab6..238d9836c 100644
--- a/apps/testing/17-router/src/app/shelf.component.ts
+++ b/apps/testing/17-router/src/app/shelf.component.ts
@@ -1,4 +1,4 @@
-import { AsyncPipe, JsonPipe, NgFor } from '@angular/common';
+import { AsyncPipe } from '@angular/common';
import { ChangeDetectionStrategy, Component, inject } from '@angular/core';
import { ActivatedRoute } from '@angular/router';
import { map } from 'rxjs';
@@ -6,15 +6,14 @@ import { availableBooks } from './book.model';
@Component({
selector: 'app-shelf',
- imports: [AsyncPipe, JsonPipe, NgFor],
+ imports: [AsyncPipe],
template: `