diff --git a/CHANGELOG.md b/CHANGELOG.md index ffcf8dc92c9d34..2e78124783414a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,19 @@ + +# 17.0.2 (2023-11-09) +### compiler-cli +| Commit | Type | Description | +| -- | -- | -- | +| [7a95cccf50](https://github.com/angular/angular/commit/7a95cccf50c01a3733c6015551f8864e246d9239) | fix | add interpolatedSignalNotInvoked to diagnostics ([#52687](https://github.com/angular/angular/pull/52687)) | +| [a548c0333e](https://github.com/angular/angular/commit/a548c0333ecc993073ee7df054119a6fdde1d27b) | fix | incorrect inferred type of for loop implicit variables ([#52732](https://github.com/angular/angular/pull/52732)) | +### core +| Commit | Type | Description | +| -- | -- | -- | +| [2cea80c6e2](https://github.com/angular/angular/commit/2cea80c6e21c113d12c38c4b3219c5f3f5944bd8) | fix | error code in image performance warning ([#52727](https://github.com/angular/angular/pull/52727)) | +| [b16fc2610a](https://github.com/angular/angular/commit/b16fc2610a37b7407713e1e0018d92372f1349e9) | fix | limit rate of markers invocations ([#52742](https://github.com/angular/angular/pull/52742)) | +| [44c48a4835](https://github.com/angular/angular/commit/44c48a48358c92c32301b578966a8e1ee9a867d8) | fix | properly update collection with repeated keys in `@for` ([#52697](https://github.com/angular/angular/pull/52697)) | + + + # 17.0.1 (2023-11-08) ### http @@ -10,7 +26,7 @@ | [70d30c28e0](https://github.com/angular/angular/commit/70d30c28e04f4ead51145e4e47df342492bfb336) | fix | Add support for ng-templates with i18n attributes ([#52597](https://github.com/angular/angular/pull/52597)) | | [4f125c5f9a](https://github.com/angular/angular/commit/4f125c5f9ae572a8216ec1fbb88f52e47b875e1e) | fix | Switches to multiple passes to fix several reported bugs ([#52592](https://github.com/angular/angular/pull/52592)) | -Web Frameworks: the internet frontier.
+Web Frameworks: the internet frontier.
These are the voyages of the framework Angular.
Its continuing mission:
To explore strange, new technologies.
diff --git a/adev/src/app/sub-navigation-data.ts b/adev/src/app/sub-navigation-data.ts index f90d43237bcb04..eddfd56a1c43ec 100644 --- a/adev/src/app/sub-navigation-data.ts +++ b/adev/src/app/sub-navigation-data.ts @@ -1269,6 +1269,11 @@ const REFERENCE_SUB_NAVIGATION_DATA: NavigationItem[] = [ path: 'extended-diagnostics/NG8108', contentPath: 'reference/extended-diagnostics/NG8108', }, + { + label: 'NG8109: Signals must be invoked in template interpolations', + path: 'extended-diagnostics/NG8109', + contentPath: 'reference/extended-diagnostics/NG8109', + }, ], }, { diff --git a/adev/src/content/guide/components/anatomy-of-components.md b/adev/src/content/guide/components/anatomy-of-components.md index f4b4138168d7c6..3f368f2b6d16c8 100644 --- a/adev/src/content/guide/components/anatomy-of-components.md +++ b/adev/src/content/guide/components/anatomy-of-components.md @@ -8,9 +8,7 @@ Every component must have: * A TypeScript class with _behaviors_ such as handling user input and fetching data from a server * An HTML template that controls what renders into the DOM * A [CSS selector](https://developer.mozilla.org/en-US/docs/Learn/CSS/Building_blocks/Selectors) that defines how the component is used in HTML -* A [CSS selector](https://developer.mozilla.org/en-US/docs/Learn/CSS/Building_blocks/Selectors) that defines how the component is used in HTML -You provide Angular-specific information for a component by adding a `@Component` [decorator](https://www.typescriptlang.org/docs/handbook/decorators.html) on top of the TypeScript class: You provide Angular-specific information for a component by adding a `@Component` [decorator](https://www.typescriptlang.org/docs/handbook/decorators.html) on top of the TypeScript class: diff --git a/adev/src/content/guide/components/outputs.md b/adev/src/content/guide/components/outputs.md index 0f161fd3337460..44ac3911aad344 100644 --- a/adev/src/content/guide/components/outputs.md +++ b/adev/src/content/guide/components/outputs.md @@ -57,7 +57,7 @@ The `@Output` decorator accepts a parameter that lets you specify a different na @Component({...}) export class CustomSlider { - @Input('valueChanged') changed = new EventEmitter(); + @Output('valueChanged') changed = new EventEmitter(); } diff --git a/adev/src/content/guide/components/programmatic-rendering.md b/adev/src/content/guide/components/programmatic-rendering.md index b4c09e7a6ba590..d96b09cf200917 100644 --- a/adev/src/content/guide/components/programmatic-rendering.md +++ b/adev/src/content/guide/components/programmatic-rendering.md @@ -28,7 +28,7 @@ export class CustomDialog { @Input() user: User; getBioComponent() { - return this.user.isAdmin ? AdminBio : StardardBio; + return this.user.isAdmin ? AdminBio : StandardBio; } } ``` diff --git a/adev/src/content/guide/defer.md b/adev/src/content/guide/defer.md index 424ebf2aac9f50..fd49bc6b4720a2 100644 --- a/adev/src/content/guide/defer.md +++ b/adev/src/content/guide/defer.md @@ -4,7 +4,7 @@ Deferrable views can be used in component template to defer the loading of select dependencies within that template. Those dependencies include components, directives, and pipes, and any associated CSS. To use this feature, you can declaratively wrap a section of your template in a `@defer` block which specifies the loading conditions. -Deferrable views support a series of [triggers](guide/defer#triggers), [prefeching](guide/defer#prefetching), and several sub blocks used for [placeholder](guide/defer#placeholder), [loading](guide/defer#loading), and [error](guide/defer#error) state management. You can also create custom conditions with [`when`](guide/defer#when) and [`prefetch when`](guide/defer#prefetching). +Deferrable views support a series of [triggers](guide/defer#triggers), [prefetching](guide/defer#prefetching), and several sub blocks used for [placeholder](guide/defer#placeholder), [loading](guide/defer#loading), and [error](guide/defer#error) state management. You can also create custom conditions with [`when`](guide/defer#when) and [`prefetch when`](guide/defer#prefetching). ```html @defer { @@ -138,7 +138,7 @@ By default, the placeholder will act as the element watched for entering viewpor } ``` -Alternatively, you can specify a [template reference variable](guide/glossary#template-reference-variable) in the same template as the `@defer` block as the element that is watched to enter the viewport. This variable is passed in as a parameter on the viewport trigger. +Alternatively, you can specify a template reference variable in the same template as the `@defer` block as the element that is watched to enter the viewport. This variable is passed in as a parameter on the viewport trigger. ```html
Hello!
@@ -162,7 +162,7 @@ By default, the placeholder will act as the interaction element as long as it is } ``` -Alternatively, you can specify a [template reference variable](guide/glossary#template-reference-variable) as the element that triggers interaction. This variable is passed in as a parameter on the interaction trigger. +Alternatively, you can specify a template reference variable as the element that triggers interaction. This variable is passed in as a parameter on the interaction trigger. ```html @@ -188,7 +188,7 @@ By default, the placeholder will act as the hover element as long as it is a sin } ``` -Alternatively, you can specify a [template reference variable](guide/glossary#template-reference-variable) as the hover element. This variable is passed in as a parameter on the hover trigger. +Alternatively, you can specify a template reference variable as the hover element. This variable is passed in as a parameter on the hover trigger. ```html
Hello!
diff --git a/adev/src/content/guide/forms/reactive-forms.md b/adev/src/content/guide/forms/reactive-forms.md index 26309767f29317..6c1a395f3d6960 100644 --- a/adev/src/content/guide/forms/reactive-forms.md +++ b/adev/src/content/guide/forms/reactive-forms.md @@ -356,7 +356,7 @@ Use the `FormBuilder.array()` method to define the array, and the `FormBuilder.c The aliases control in the form group instance is now populated with a single control until more controls are added dynamically. - + A getter provides access to the aliases in the form array instance compared to repeating the `profileForm.get()` method to get each instance. The form array instance represents an undefined number of controls in an array. It's convenient to access a control through a getter, and this approach is straightforward to repeat for additional controls.
Use the getter syntax to create an `aliases` class property to retrieve the alias's form array control from the parent form group. diff --git a/adev/src/content/guide/http/overview.md b/adev/src/content/guide/http/overview.md index b24a5e67ca397c..b9cdfd0a87b85c 100644 --- a/adev/src/content/guide/http/overview.md +++ b/adev/src/content/guide/http/overview.md @@ -15,5 +15,5 @@ The HTTP client service offers the following major features: - + diff --git a/adev/src/content/guide/routing/common-router-tasks.md b/adev/src/content/guide/routing/common-router-tasks.md index b7d581df6b4132..e8ff7307c1f2f9 100644 --- a/adev/src/content/guide/routing/common-router-tasks.md +++ b/adev/src/content/guide/routing/common-router-tasks.md @@ -144,7 +144,7 @@ To get information from a route: - + Add the `withComponentInputBinding` feature to the `provideRouter` method. diff --git a/adev/src/content/guide/templates/class-binding.md b/adev/src/content/guide/templates/class-binding.md index c367ef1423ff69..6290072cd4e122 100644 --- a/adev/src/content/guide/templates/class-binding.md +++ b/adev/src/content/guide/templates/class-binding.md @@ -88,6 +88,6 @@ A single HTML element can have its CSS class list and style values bound to mult ## What’s next - + diff --git a/adev/src/content/guide/templates/control-flow.md b/adev/src/content/guide/templates/control-flow.md index 02f659e4fe4d2c..6a5ff2e47c7bb1 100644 --- a/adev/src/content/guide/templates/control-flow.md +++ b/adev/src/content/guide/templates/control-flow.md @@ -2,7 +2,7 @@ Angular templates support *control flow blocks* that let you conditionally show, hide, and repeat elements. -IMPORTANT: Angular built-in control flow is in [developer preview](/guide/releases#developer-preview). It is ready to try, but may change before becoming stable. +IMPORTANT: Angular built-in control flow is in [developer preview](reference/releases#developer-preview). It is ready to try, but may change before becoming stable. ## `@if` block conditionals diff --git a/adev/src/content/guide/testing/overview.md b/adev/src/content/guide/testing/overview.md index 262819e27694db..25386be0be9ca0 100644 --- a/adev/src/content/guide/testing/overview.md +++ b/adev/src/content/guide/testing/overview.md @@ -18,7 +18,7 @@ ng test The `ng test` command builds the application in *watch mode*, and launches the [Karma test runner](https://karma-runner.github.io). -The console output looks the below: +The console output looks like below: diff --git a/adev/src/content/introduction/essentials/conditionals-and-loops.md b/adev/src/content/introduction/essentials/conditionals-and-loops.md index 16e865da1e5c08..30ca5f4af0a3c6 100644 --- a/adev/src/content/introduction/essentials/conditionals-and-loops.md +++ b/adev/src/content/introduction/essentials/conditionals-and-loops.md @@ -32,7 +32,7 @@ export class UserControls { } ``` -In this example, Angular only renders the `
` element if the `isAdmin` property is true. Otherwise, it does not appear page. +In this example, Angular only renders the `