Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Show more details with the ExpressionChangedAfterItHasBeenCheckedError warning #18970

Closed
leocaseiro opened this issue Aug 31, 2017 · 9 comments
Closed
Labels
area: core Issues related to the framework runtime core: change detection feature: under consideration Feature request for which voting has completed and the request is now under consideration feature Issue that requests a new feature hotlist: error messages
Milestone

Comments

@leocaseiro
Copy link

I'm submitting a...


[ ] Regression (a behavior that used to work and stopped working in a new release)
[ ] Bug report  
[x] Feature request
[ ] Documentation issue or request
[ ] Support request => Please do not submit support request here, instead see https://github.com/angular/angular/blob/master/CONTRIBUTING.md#question

Current behavior

The current warning message ExpressionChangedAfterItHasBeenCheckedError is telling us what are the values before and after the change detection, but there aren't enough information to help to debug.

We are never sure what object or property is referring to. Also, the lines are not always reliable.

In some cases, we use an array of objects and messages like so are provided:

ERROR Error: ExpressionChangedAfterItHasBeenCheckedError: 
Expression has changed after it was checked. 
Previous value: 'undefined'. Current value: '[object Object],[object Object]'.
    at viewDebugError (errors.ts:30)
    at expressionChangedAfterItHasBeenCheckedError (errors.ts:29)
    at checkBindingNoChanges (util.ts:145)
    at checkNoChangesNodeInline (view.ts:477)
    at checkNoChangesNode (view.ts:568)
    at debugCheckNoChangesNode (services.ts:557)
    at debugCheckDirectivesFn (services.ts:466)
    at Object.View_App_0._co [as updateDirectives] (App.html:7)
    at Object.debugUpdateDirectives [as updateDirectives] (services.ts:443)
    at checkNoChangesView (view.ts:378)

I can see the file name is (App.html:7), so I presume is something in my template, but it's not clear what it is. Also, note that my bug should be on line 2 (<div *ngIf="testObject">), and not on line 7 as mentioned by angular.

Expected behavior

Perhaps, it would be nice adding to the warning message the property/object that has changed its value.

I would expect the warning message being something like so, instead:

ERROR Error: ExpressionChangedAfterItHasBeenCheckedError: 
Expression has changed after it was checked. 
Previous testObject value: 'undefined'. Current testObject value: '[{a: 1, b: 2}, {a: 3, b: 4}]'.

PS: note the testObject key from my App class, also the values from object as string.

In that case, it would be easier to debug that the object is testObject;

Minimal reproduction of the problem with instructions

This plunker can give an example of the context provided by angular. http://plnkr.co/edit/mX6REf9oidrVeURCvTZG?p=preview

This plunker is a fork from @adrienboulle from #14748 (comment)

@Component({
  selector: 'my-app',
  template: `
    <div>
      <div *ngIf="testObject">
          Object exists
      </div>
      <div class="image-container"
       [ngStyle]="{
         'height': getHeightPx()
       }">
        <img alt="image" style="height: 100%" [src]="getUrl()"/>
        
      </div>
    </div>
  `,
})
export class App implements AfterViewInit {
  img: Image;
  isLoaded: boolean = false;
  testObject: any;

  constructor(private elementRef: ElementRef) {}

  public ngAfterViewInit(): void {
    this.img = this.elementRef.nativeElement.querySelector('img');
    this.isLoaded = true
    
    this.testObject = [{a: 1, b: 2}, {a: 3, b: 4}];
  }

  public getUrl(): string {
    return 'https://angular.io/resources/images/logos/angular2/angular.png';
  }
  
  public getHeightPx(): string {
    if (!this.isLoaded)
      return '0px';

    return '100px';
  }
}

If you comment line 33: // this.testObject = [{a: 1, b: 2}, {a: 3, b: 4}];, you will end up with another bug with the same issue, but now, referring to the getHeightPx() method which was pointed by @adrienboulle on the issue #14748.

App.html:9 ERROR Error: ExpressionChangedAfterItHasBeenCheckedError: 
Expression has changed after it was checked. Previous value: '0px'. Current value: '100px'.

In that case, it's much easier to debug. The line 9 is correct.
Also, because of its values ('0px' and '100px'), it is easier to find the property. However, the message error could have the missing getHeightPx() method which would make the debugging easier.

What is the motivation / use case for changing the behavior?

Make it easier to debug this popular error #18129 #17887 #17572 #15464 #14748 and many other issues.

Environment

Angular version: 4.3.6
@victornoel
Copy link
Contributor

For the record, there was an issue (#17887) but it was closed without explanation... I hope this one will be resolved instead :)

@IgorMinar IgorMinar added the area: core Issues related to the framework runtime label Sep 20, 2017
@ocombe
Copy link
Contributor

ocombe commented Sep 20, 2017

Ah that's perfect, I was about to open an issue for the same problem. It'd be a great help for devs to have more info in this error message

@crowmagnumb
Copy link

crowmagnumb commented Oct 24, 2017

+1 for fixing this. This error is hard to find and this would help immensely. I hacked the core.es5.js file and added the following line ...

function expressionChangedAfterItHasBeenCheckedError(context, oldValue, currValue, isFirstCheck) {
    console.log(oldValue, currValue);
    ...
}

... and I was able to find the source of the error right away.

@leocaseiro
Copy link
Author

leocaseiro commented Oct 24, 2017

As a complement of @crowmagnumb solution, I've added some more info:

function expressionChangedAfterItHasBeenCheckedError(context, oldValue, currValue, isFirstCheck) {
    console.group('expressionChangedAfterItHasBeenCheckedError');
    console.log('context', context);
    console.log('oldValue', oldValue);
    console.log('currValue', currValue);
    console.log('isFirstCheck', isFirstCheck);
    console.groupEnd();
 ...
}

PS: the file is on node_modules/@angular/core/@angular/core.es5.js:8405

Update, since Angular 5.0.0, the path is node_modules/@angular/core/esm5/core.js:9485

@chuckjaz chuckjaz added the feature Issue that requests a new feature label Oct 27, 2017
@slawojstanislawski
Copy link

Currently when I need more information about it, in the mentioned file (node_modules@angular\core\esm5\core.js) at the very beginning of the expressionChangedAfterItHasBeenCheckedError function I tend to add this line: oldValue = JSON.stringify(oldValue) - that way the old value is in the red console error message, for quicker lookup in the logs. I wonder why it's not implemented this way, perhaps some apps bind to enormous objects, so a huge log could be cumbersome, but I believe it's more of an exception than a rule.

@alexzuza
Copy link
Contributor

Currently i created online editor where i can catch such kind of errors
https://medium.com/@a.yurich.zuev/catch-angular-template-errors-like-a-pro-or-how-i-create-angular-demo-e98694977911

@ngbot ngbot bot added this to the Backlog milestone Jan 23, 2018
@angular-robot angular-robot bot added the feature: under consideration Feature request for which voting has completed and the request is now under consideration label Jun 5, 2021
@pkozlowski-opensource
Copy link
Member

A simpler reproduce scenario: https://stackblitz.com/edit/angular-ivy-zzuuml?file=src%2Fapp%2Fapp.component.ts

The good news is that, starting with ivy, we've got a stack trace that points to the exact place in the template where the "culprit" binding is:

Screen Shot 2022-05-11 at 12 48 49

Still, we could do better and include more info in the error. This would require changes to the compiled output, though (probably only in the dev mode) as we don't have access to the expression "source" when a binding is evaluated.

For now checking the stack trace is the best way of debugging this error.

JeanMeche added a commit to JeanMeche/angular that referenced this issue May 14, 2023
Related to angular#50272 and angular#18970, this improves the error message of NG100 by including the class name of the component where the error was triggered.
JeanMeche added a commit to JeanMeche/angular that referenced this issue May 15, 2023
Related to angular#50272 and angular#18970, this improves the error message of NG100 by including the class name of the component where the error was triggered.
JeanMeche added a commit to JeanMeche/angular that referenced this issue May 15, 2023
Related to angular#50272 and angular#18970, this improves the error message of NG100 by including the class name of the component where the error was triggered.
AndrewKushnir pushed a commit that referenced this issue May 16, 2023
…#50286)

Related to #50272 and #18970, this improves the error message of NG100 by including the class name of the component where the error was triggered.

PR Close #50286
AndrewKushnir pushed a commit that referenced this issue May 16, 2023
…#50286)

Related to #50272 and #18970, this improves the error message of NG100 by including the class name of the component where the error was triggered.

PR Close #50286
sumitparakh pushed a commit to sumitparakh/angular that referenced this issue May 18, 2023
…angular#50286)

Related to angular#50272 and angular#18970, this improves the error message of NG100 by including the class name of the component where the error was triggered.

PR Close angular#50286
sumitparakh added a commit to sumitparakh/angular that referenced this issue May 18, 2023
Closes angular#49686

Revert "docs(docs-infra): Remove unused annotation template (angular#50114)" (angular#50206)

This reverts commit a1ca162.

This commit causes failures in g3, because `@Annotation` is load-bearing for
tsickle's decorator downleveling transformation.

PR Close angular#50206

refactor(compiler): generate ng-container instructions (angular#50008)

ElementContainer instructions refer to `ng-container` element tags, which don't produce corresponding DOM nodes. Much like element instructions, container instructions can also have their start and end tags combined.

Co-authored-by: Alex Rickabaugh <alxhub@users.noreply.github.com>
Co-authored-by: Andrew Scott <atscott@users.noreply.github.com>

PR Close angular#50008

refactor(compiler): handle binary operators (angular#50008)

We should be able to ingest binary operators. This involves parsing the left and right ASTs, and converting the operator string to a logical `BinaryOperator`.

Co-authored-by: Alex Rickabaugh <alxhub@users.noreply.github.com>

PR Close angular#50008

refactor(compiler): handle chains in event listeners (angular#50008)

It's possible to have chains of statements, exclusively in event listeners. A listener with a chain looks like the following:

```
(click)="onClick($event); 1 == 1"
```

We handle this by generating multiple statements, one for each expression in the chain, and only making the final statement the return statement. We place this logic in code specific to listeners, since they are the only place this construct can appear.

Co-authored-by: Alex Rickabaugh <alxhub@users.noreply.github.com>

PR Close angular#50008

refactor(compiler): generate property instructions for `ng-template` inputs (angular#50008)

When ingesting an `ng-template`, inputs might be on the `inputs` or the `templateAttrs` field. More investigation is required to pinpoint the specifics of `templateAttrs`.

For now, we can process them both and generate the appropriate update-mode property instructions.

Co-authored-by: Alex Rickabaugh <alxhub@users.noreply.github.com>

PR Close angular#50008

refactor(compiler): support `KeyedRead` expressions (angular#50008)

The compiler can now accept key read expressions (e.g. `foo[bar]`), where both the receiver and index are sub-expressions.

PR Close angular#50008

refactor(compiler): extract save/restore view logic to separate phase (angular#50008)

Saving and restoring the view is significant enough that it makes sense to handle it independently. This makes for easier reasoning about how view save/restore works.
Co-authored-by: Alex Rickabaugh <alxhub@users.noreply.github.com>

PR Close angular#50008

refactor(core): remove webworker related checks on `assertDomNode` (angular#50061)

Since the drop of the webworker platform the node can't be a `WebWorkerRenderNode`.

PR Close angular#50061

refactor(platform-server): import `xhr2` dynamically in the ServerXhr class (angular#50095)

This commit updates the `@angular/common/http` and `@angular/platform-server` packages to allow dynamic import of the `xhr2` dependency. The `xhr2` dependency has side-effects that rely on a global scope and as a result in some environments those side-effectful calls fail. With the changes from this PR, the import is delayed until it's actually needed, which gives a chance for the underlying platform to setup global scope (via shims) as needed.

Co-authored-by: alan-agius4 <17563226+alan-agius4@users.noreply.github.com>

PR Close angular#50095

build: remove unused deps (angular#50116)

* All `@types` package removed have typings in their package.
* brotli is unused
* tmp is unused
* vlq is unused

PR Close angular#50116

fix(core): bootstrapApplication call not rejected when error is thrown in importProvidersFrom module (angular#50120)

Fixes that the promise returned by `bootstrapApplication` wasn't being rejected when a module imported using `importProvidersFrom` throws an error. The problem was that the function that resolves the providers happens very early as the injector is being constructed.

Fixes angular#49923.

PR Close angular#50120

docs(forms): warn the user about getting old values and show how to avoid (angular#50123)
PR Close angular#50123

docs(forms): warn the user about getting old values and show how to avoid (angular#50123)

Co-authored-by: Andrew Kushnir <43554145+AndrewKushnir@users.noreply.github.com>
PR Close angular#50123

docs(forms): warn the user about getting old values and show how to avoid (angular#50123)

PR Close angular#50123

refactor(core): Throw an error when the document is not initialized. (angular#50143)

In case the document is accessed but not available we should throw ASAP an error to prevent non explicit errors.

PR Close angular#50143

fix(core): only try to retrieve transferred state on the browser (angular#50144)

Prior to this commit we tried to retrieve transferred state on both browser and server. Doing this on the server was redundant and could causes issues as `document` might be undefined.

Closes angular#50138

PR Close angular#50144

build: update dependency https-proxy-agent to v6 (angular#50152)

See associated pull request for more information.

PR Close angular#50152

docs: changed component name to home.component.ts in point 2 of step 3 (angular#50170)

PR Close angular#50170

docs: fix obs variable name to obs$ (angular#50196)

PR Close angular#50196

docs: Fixed Spelling 'servivce' to 'service' (angular#50204)

PR Close angular#50204

docs: fix filename in first-app (angular#50207)

Same mistake as angular#50204 but a different file.

PR Close angular#50207

refactor(core): Update CD traversal to use 'modes' (angular#50005)

Rather than maintaining separate traversal functions that act differently, this change
updates the change detection traversal to share more code and use different modes
to control the type of traversal being performed.

PR Close angular#50005

docs: delete aborted documentation files (angular#49962)

Those files were created as part of angular#47391 but the content was never merged.

PR Close angular#49962

refactor(compiler): Remove unused TransformVisitor & NullVisitor (angular#48646)

NullVisitor & TransformVisitor are unused and unexported outside the compiler package, we can remove them.

PR Close angular#48646

build: lock file maintenance (angular#49914)

See associated pull request for more information.

PR Close angular#49914

test(zone.js): update zone.js test for jasmine upgrade (angular#49914)

Update test cases to pass jasmine 6.x update.

PR Close angular#49914

refactor(common): cleanup platformLocation (angular#50054)

* Drop the usage of @Inject()
* Drop `supportsState` as its supported by evergreen browsers.

PR Close angular#50054

refactor(compiler): introduce internal transplanted type (angular#50104)

Adds a new AST for a `TransplantedType` in the compiler which will be used for some upcoming work. A transplanted type is a type node that is defined in one place in the app, but needs to be copied to a different one (e.g. the generated .d.ts). These changes also include updates to the type translator that will rewrite any type references within the type to point to the new context file.

PR Close angular#50104

build(devtools): make sure linker runs on fesm2022 bundles (angular#50086)

Since DevTools' Angular framework dependencies are built from local files, they are always up to date. [Recently](angular#49332) these dependencies started being published as fesm2022 instead of fesm2020. We also have an Angular dependency `ngx-flamegraph` that was built and published as fesm2020.

The easiest fix to make sure all of our Angular based dependencies are processed by the linker would be to update the filterPaths field in that file from `/fesm2020/` to `/fesm2020|fesm2022/`. When v16 releases, we can update ngx-flamegraph and publish it with the new APF, letting us change filterPaths to just `/fesm2022/`.

PR Close angular#50086

build(devtools): target es2020 explicitly (angular#50086)

We do this because of a bug caused by evanw/esbuild#2950 and a recent change to how angular static properties are attached to class constructors. Targeting esnext or es2022 will cause the static initializer blocks that attach these static properties on class constructors to reference a class constructor variable that they do not have access to.

Because of this we explicitly target es2020 in our Angular DevTools builds.

PR Close angular#50086

docs: update releases guide for v16 (angular#50128)

Also clarify that the deprecations guide is for _noteworthy_ deprecations and may not be comprehensive.

PR Close angular#50128

docs: update starter lesson to contain example images from the start (angular#50212)

We received feedback that the starter lesson should also include the stock images.

PR Close angular#50212

fix(core): handle hydration of root components with injected ViewContainerRef (angular#50136)

This commit fixes an issue where a root component with an injected ViewContainerRef (for ex. `inject(ViewContainerRef)`) was triggering a certain code path during hydration which didn't handle this case correctly.

Resolves angular#50133.

PR Close angular#50136

feat(core): support TypeScript 5.1 (angular#50156)

Updates the project to support building with TypeScript 5.1.

PR Close angular#50156

docs: standalone component preloading config (angular#50193)

The preloading modules documentation were missing information about how to apply preloading strategies to standalone application  ( `ng new AppName --standalone` ).
Feel free to fix anything not in line with the Angular documentation style guide, as this is my first attempt at contributing :)

- Added example for `app.config.ts` providing info on the `withPreloading(<preloading strategy>)` you can add to the `provideRouter()` RouterFeatures.
- Specified that preloading modules also applies for standalone components.
PR Close angular#50193

refactor(router): remove private export of `withPreloading` (angular#50194)

`withPreloading` is part of the public API.

PR Close angular#50194

fix(core): handle projection of hydrated containters into components that skip hydration (angular#50199)

This commit updates hydration logic to support a scenario where a view container that was hydrated and later on projected to a component that skips hydration. Currently, such projected content is extracted from the DOM (since a component that skips hydration needs to be re-created), but never added back, since the current logic treats such content as "already inserted".

Closes angular#50175.

PR Close angular#50199

fix(core): add additional component metadata to component ID generation (angular#50203)

This commit add `exportAs`, `signals`, `inputs` and `outputs` into account when generating a component ID.

See: angular#50158 (comment)

PR Close angular#50203

docs: fix link label. (angular#50209)

Removing a duplicate https protocol.

PR Close angular#50209

docs: fix typos on first-app tutorial (angular#50211)

PR Close angular#50211

refactor(core): drop `next` prefix from hydration guide link (angular#50214)

This commit updates the content of the console log to drop the `next.` prefix from hydration guide link.

PR Close angular#50214

build: update github/codeql-action action to v2.3.3 (angular#50216)

See associated pull request for more information.

PR Close angular#50216

docs(docs-infra): Remove warning for `@Annotation`. (angular#50218)

Per angular#50206, `@Annotation` is needed for tsickle. This commit removes the warning "Invalid tags found" produced by dgeni for the annotation decorator.

PR Close angular#50218

docs: fix typo on hydration in Preserve Whitespaces Configuration (angular#50236)
PR Close angular#50236

docs: release notes for the v16.0.1 release

release: cut the v16.1.0-next.0 release

refactor(core): simplify state transfer escaping (angular#50201)

This commit removes unnecessary transfer state escaping and updates this process to be done by the means of a `replacer` and `reviver` method as this removes the need to export the escaping and unescaping methods.

The only thing that we need to escape is `<script` and `</script` which are done by the browsers, but not Node.js.

PR Close angular#50201

build: lock file maintenance (angular#50227)

See associated pull request for more information.

(cherry picked from commit d5f92bd)

PR Close angular#50227

refactor: remove unused benchmarks (angular#50108)

The benchmarks in the 'old' directory are not used / maintained.

PR Close angular#50108

refactor: remove benchpres tests for other frameworks (angular#50108)

Some of the benchpress tests were written against other UI
frameworks (ex.: incremental DOM, initial version of ivy)
and those frameworks are no longer a valuable comparision target.

PR Close angular#50108

docs(docs-infra): Warning message when using absolute links to aio in the documentation (angular#50213)

This commit adds a processor to check for absolute links to angular.io. Absolute links to aio should be avoided because they will appear as external links.

PR Close angular#50213

docs: replace absolute links to aio with relative links. (angular#50213)

This change follows the introduction of the warning message from a transform processor to prevent absolute links to angular.io.

PR Close angular#50213

refactor(elements): remove unnecessary polyfill deps (angular#50115)

`webcomponents/custom-elements` and `document-register-element` are unnecessary now that we support only evergreen browsers.

PR Close angular#50115

build: update dependency firebase-tools to v12 (angular#50223)

See associated pull request for more information.

PR Close angular#50223

fix(core): allow onDestroy unregistration while destroying (angular#50237)

Ensure that all onDestroy callbacks are called by allowing unregistering of onDestroy hooks while destroying.

Fixes angular#50221

PR Close angular#50237

docs: fix v13 dependencies versions. (angular#50243)

Fixing a small mistake.

Fixes angular#50242

PR Close angular#50243

docs: split unsupported versions table in two. (angular#50243)

To ease the maintenance of this table and keep the same number of columns between active and unsupported versions.

PR Close angular#50243

build: bump in-memory-web-api dependency versions (angular#50246)

This commit updates in-memory-web-api package versions from v15 -> v16.

PR Close angular#50246

build: lock file maintenance (angular#49879)

See associated pull request for more information.

PR Close angular#49879

docs: update Angular CLI help [main] (angular#50256)

Updated Angular CLI help contents.

PR Close angular#50256

docs: fix mistake in tutorial (angular#50261)

PR Close angular#50261

build: update dependency @rollup/plugin-commonjs to v25 (angular#50264)

See associated pull request for more information.

PR Close angular#50264

docs: add missing "when" (angular#50262)
PR Close angular#50262

fix(docs-infra): labels with links should have the same font weight (angular#50258)

Fix anchor tag styling inside label.api-status-label to match font weight of label styling that does not have anchor tag.

PR Close angular#50258

build: update all non-major dependencies (angular#50217)

See associated pull request for more information.

PR Close angular#50217

build: share Saucelabs browsers between karma test targets using background Saucelabs daemon and custom karma launcher (angular#49200)

This upgrades the Saucelabs Bazel step on CI to use the more efficient Saucelabs daemon

PR Close angular#49200

build: address review feedback; added scripts/test/run-saucelabs-tests.sh script for local testing (angular#49200)

more chars to meet the linters requirements

PR Close angular#49200

build: address review feedback; should be ready to land now... additional chars to meet commit msg formatting requirements (angular#49200)

plus more additional chars here

PR Close angular#49200

build: don't run saucelabs tests yet on PRs... that will happen in a followup (angular#49200)

additional test to make linter happy

PR Close angular#49200

refactor(core): remove legacy way of preventing default actions (angular#50257)

Setting `returnValue = false` to prevent the default action of events hasn't been necessary since IE9.

PR Close angular#50257

docs: fix inconsistencies in getting started (angular#50275)

Fixes angular#50274

PR Close angular#50275

docs: fix mistake in first-app-lesson-03 (angular#50278)

The correct filename is `home.component.ts`.

fixes angular#50277

PR Close angular#50278

docs(docs-infra): Remove internal constructors from the doc. (angular#50282)

Internal constructor should not be exposed in the doc. This removes them.

Related to angular#50281

PR Close angular#50282

docs(docs-infra): Add a deprecated label to APIs (angular#50287)

This adds a deprecated label next to the other labels on the API pages for methods & properties.

Fixes angular#44265

PR Close angular#50287

docs: Glossary link to N (angular#50294)

The shortcut to N was missing resulting in a rendering issue.

PR Close angular#50294

docs: add Enea to GDE contributors list (angular#50254)

PR Close angular#50254

docs: update events (angular#50309)

Generated `events.json` with the latest events retrieved from the Firebase DB.

PR Close angular#50309

fix(core): allow passing value of any type to `isSignal` function (angular#50035)

Unlike the current signature where the input argument must a function, this change allows an input of any type to be passed to the `isSignal` function.

PR Close angular#50035

refactor(common): Reduce the precision to 2 digits in the ngOptimizedImage distortion warning message (angular#50276)

Using toFixed().

fixes angular#50273

PR Close angular#50276

refactor(core): Improve `ExpressionChangedAfterItHasBeenCheckedError` (angular#50286)

Related to angular#50272 and angular#18970, this improves the error message of NG100 by including the class name of the component where the error was triggered.

PR Close angular#50286

refactor(forms): remove unnecessary Array.from (angular#50314)

The Array.from isn't necessary since we're just iterating over the map keys.

PR Close angular#50314

docs: updated 'conceptual preview' title (angular#50326)
PR Close angular#50326

docs: fix typo in NG0912 error guide (angular#50322)
PR Close angular#50322

docs: fix typo in dependency injection guide (angular#50323)
PR Close angular#50323

docs: fix typo in security guide (angular#50324)
PR Close angular#50324

Revert "fix(core): add additional component metadata to component ID generation (angular#50203)" (angular#50334)

This reverts commit 52c74d3.

The reason for revert: breaking some apps in Google's codebase.

PR Close angular#50334

docs: added wiki link for domain model (angular#50180)

Closes angular#49570

PR Close angular#50180

build: update all non-major dependencies (angular#50316)

See associated pull request for more information.

PR Close angular#50316

docs: update live demo for change detector (angular#50328)

fixes angular#44553

PR Close angular#50328

docs: remove plnkr link from markForCheck example (angular#50328)

PR Close angular#50328

refactor(core): Add a warning when `ApplicationRef.isStable` doesn't emit `true` (angular#50295)

Hydration requires a stable App to run some logic.
With this warning developers will be informed about potential issues encountered when running an unstable app.

Fixes angular#50285

PR Close angular#50295

fix(core): add additional component metadata to component ID generation (angular#50336)

This commit add `exportAs`, `signals`, `inputs` and `outputs` into account when generating a component ID.

Co-authored-by: alan-agius4 <17563226+alan-agius4@users.noreply.github.com>

PR Close angular#50336

docs: release notes for the v16.0.2 release

release: cut the v16.1.0-next.1 release

docs: fixed typo
sumitparakh added a commit to sumitparakh/angular that referenced this issue May 18, 2023
Closes angular#49686

Revert "docs(docs-infra): Remove unused annotation template (angular#50114)" (angular#50206)

This reverts commit a1ca162.

This commit causes failures in g3, because `@Annotation` is load-bearing for
tsickle's decorator downleveling transformation.

PR Close angular#50206

refactor(compiler): generate ng-container instructions (angular#50008)

ElementContainer instructions refer to `ng-container` element tags, which don't produce corresponding DOM nodes. Much like element instructions, container instructions can also have their start and end tags combined.

Co-authored-by: Alex Rickabaugh <alxhub@users.noreply.github.com>
Co-authored-by: Andrew Scott <atscott@users.noreply.github.com>

PR Close angular#50008

refactor(compiler): handle binary operators (angular#50008)

We should be able to ingest binary operators. This involves parsing the left and right ASTs, and converting the operator string to a logical `BinaryOperator`.

Co-authored-by: Alex Rickabaugh <alxhub@users.noreply.github.com>

PR Close angular#50008

refactor(compiler): handle chains in event listeners (angular#50008)

It's possible to have chains of statements, exclusively in event listeners. A listener with a chain looks like the following:

```
(click)="onClick($event); 1 == 1"
```

We handle this by generating multiple statements, one for each expression in the chain, and only making the final statement the return statement. We place this logic in code specific to listeners, since they are the only place this construct can appear.

Co-authored-by: Alex Rickabaugh <alxhub@users.noreply.github.com>

PR Close angular#50008

refactor(compiler): generate property instructions for `ng-template` inputs (angular#50008)

When ingesting an `ng-template`, inputs might be on the `inputs` or the `templateAttrs` field. More investigation is required to pinpoint the specifics of `templateAttrs`.

For now, we can process them both and generate the appropriate update-mode property instructions.

Co-authored-by: Alex Rickabaugh <alxhub@users.noreply.github.com>

PR Close angular#50008

refactor(compiler): support `KeyedRead` expressions (angular#50008)

The compiler can now accept key read expressions (e.g. `foo[bar]`), where both the receiver and index are sub-expressions.

PR Close angular#50008

refactor(compiler): extract save/restore view logic to separate phase (angular#50008)

Saving and restoring the view is significant enough that it makes sense to handle it independently. This makes for easier reasoning about how view save/restore works.
Co-authored-by: Alex Rickabaugh <alxhub@users.noreply.github.com>

PR Close angular#50008

refactor(core): remove webworker related checks on `assertDomNode` (angular#50061)

Since the drop of the webworker platform the node can't be a `WebWorkerRenderNode`.

PR Close angular#50061

refactor(platform-server): import `xhr2` dynamically in the ServerXhr class (angular#50095)

This commit updates the `@angular/common/http` and `@angular/platform-server` packages to allow dynamic import of the `xhr2` dependency. The `xhr2` dependency has side-effects that rely on a global scope and as a result in some environments those side-effectful calls fail. With the changes from this PR, the import is delayed until it's actually needed, which gives a chance for the underlying platform to setup global scope (via shims) as needed.

Co-authored-by: alan-agius4 <17563226+alan-agius4@users.noreply.github.com>

PR Close angular#50095

build: remove unused deps (angular#50116)

* All `@types` package removed have typings in their package.
* brotli is unused
* tmp is unused
* vlq is unused

PR Close angular#50116

fix(core): bootstrapApplication call not rejected when error is thrown in importProvidersFrom module (angular#50120)

Fixes that the promise returned by `bootstrapApplication` wasn't being rejected when a module imported using `importProvidersFrom` throws an error. The problem was that the function that resolves the providers happens very early as the injector is being constructed.

Fixes angular#49923.

PR Close angular#50120

docs(forms): warn the user about getting old values and show how to avoid (angular#50123)
PR Close angular#50123

docs(forms): warn the user about getting old values and show how to avoid (angular#50123)

Co-authored-by: Andrew Kushnir <43554145+AndrewKushnir@users.noreply.github.com>
PR Close angular#50123

docs(forms): warn the user about getting old values and show how to avoid (angular#50123)

PR Close angular#50123

refactor(core): Throw an error when the document is not initialized. (angular#50143)

In case the document is accessed but not available we should throw ASAP an error to prevent non explicit errors.

PR Close angular#50143

fix(core): only try to retrieve transferred state on the browser (angular#50144)

Prior to this commit we tried to retrieve transferred state on both browser and server. Doing this on the server was redundant and could causes issues as `document` might be undefined.

Closes angular#50138

PR Close angular#50144

build: update dependency https-proxy-agent to v6 (angular#50152)

See associated pull request for more information.

PR Close angular#50152

docs: changed component name to home.component.ts in point 2 of step 3 (angular#50170)

PR Close angular#50170

docs: fix obs variable name to obs$ (angular#50196)

PR Close angular#50196

docs: Fixed Spelling 'servivce' to 'service' (angular#50204)

PR Close angular#50204

docs: fix filename in first-app (angular#50207)

Same mistake as angular#50204 but a different file.

PR Close angular#50207

refactor(core): Update CD traversal to use 'modes' (angular#50005)

Rather than maintaining separate traversal functions that act differently, this change
updates the change detection traversal to share more code and use different modes
to control the type of traversal being performed.

PR Close angular#50005

docs: delete aborted documentation files (angular#49962)

Those files were created as part of angular#47391 but the content was never merged.

PR Close angular#49962

refactor(compiler): Remove unused TransformVisitor & NullVisitor (angular#48646)

NullVisitor & TransformVisitor are unused and unexported outside the compiler package, we can remove them.

PR Close angular#48646

build: lock file maintenance (angular#49914)

See associated pull request for more information.

PR Close angular#49914

test(zone.js): update zone.js test for jasmine upgrade (angular#49914)

Update test cases to pass jasmine 6.x update.

PR Close angular#49914

refactor(common): cleanup platformLocation (angular#50054)

* Drop the usage of @Inject()
* Drop `supportsState` as its supported by evergreen browsers.

PR Close angular#50054

refactor(compiler): introduce internal transplanted type (angular#50104)

Adds a new AST for a `TransplantedType` in the compiler which will be used for some upcoming work. A transplanted type is a type node that is defined in one place in the app, but needs to be copied to a different one (e.g. the generated .d.ts). These changes also include updates to the type translator that will rewrite any type references within the type to point to the new context file.

PR Close angular#50104

build(devtools): make sure linker runs on fesm2022 bundles (angular#50086)

Since DevTools' Angular framework dependencies are built from local files, they are always up to date. [Recently](angular#49332) these dependencies started being published as fesm2022 instead of fesm2020. We also have an Angular dependency `ngx-flamegraph` that was built and published as fesm2020.

The easiest fix to make sure all of our Angular based dependencies are processed by the linker would be to update the filterPaths field in that file from `/fesm2020/` to `/fesm2020|fesm2022/`. When v16 releases, we can update ngx-flamegraph and publish it with the new APF, letting us change filterPaths to just `/fesm2022/`.

PR Close angular#50086

build(devtools): target es2020 explicitly (angular#50086)

We do this because of a bug caused by evanw/esbuild#2950 and a recent change to how angular static properties are attached to class constructors. Targeting esnext or es2022 will cause the static initializer blocks that attach these static properties on class constructors to reference a class constructor variable that they do not have access to.

Because of this we explicitly target es2020 in our Angular DevTools builds.

PR Close angular#50086

docs: update releases guide for v16 (angular#50128)

Also clarify that the deprecations guide is for _noteworthy_ deprecations and may not be comprehensive.

PR Close angular#50128

docs: update starter lesson to contain example images from the start (angular#50212)

We received feedback that the starter lesson should also include the stock images.

PR Close angular#50212

fix(core): handle hydration of root components with injected ViewContainerRef (angular#50136)

This commit fixes an issue where a root component with an injected ViewContainerRef (for ex. `inject(ViewContainerRef)`) was triggering a certain code path during hydration which didn't handle this case correctly.

Resolves angular#50133.

PR Close angular#50136

feat(core): support TypeScript 5.1 (angular#50156)

Updates the project to support building with TypeScript 5.1.

PR Close angular#50156

docs: standalone component preloading config (angular#50193)

The preloading modules documentation were missing information about how to apply preloading strategies to standalone application  ( `ng new AppName --standalone` ).
Feel free to fix anything not in line with the Angular documentation style guide, as this is my first attempt at contributing :)

- Added example for `app.config.ts` providing info on the `withPreloading(<preloading strategy>)` you can add to the `provideRouter()` RouterFeatures.
- Specified that preloading modules also applies for standalone components.
PR Close angular#50193

refactor(router): remove private export of `withPreloading` (angular#50194)

`withPreloading` is part of the public API.

PR Close angular#50194

fix(core): handle projection of hydrated containters into components that skip hydration (angular#50199)

This commit updates hydration logic to support a scenario where a view container that was hydrated and later on projected to a component that skips hydration. Currently, such projected content is extracted from the DOM (since a component that skips hydration needs to be re-created), but never added back, since the current logic treats such content as "already inserted".

Closes angular#50175.

PR Close angular#50199

fix(core): add additional component metadata to component ID generation (angular#50203)

This commit add `exportAs`, `signals`, `inputs` and `outputs` into account when generating a component ID.

See: angular#50158 (comment)

PR Close angular#50203

docs: fix link label. (angular#50209)

Removing a duplicate https protocol.

PR Close angular#50209

docs: fix typos on first-app tutorial (angular#50211)

PR Close angular#50211

refactor(core): drop `next` prefix from hydration guide link (angular#50214)

This commit updates the content of the console log to drop the `next.` prefix from hydration guide link.

PR Close angular#50214

build: update github/codeql-action action to v2.3.3 (angular#50216)

See associated pull request for more information.

PR Close angular#50216

docs(docs-infra): Remove warning for `@Annotation`. (angular#50218)

Per angular#50206, `@Annotation` is needed for tsickle. This commit removes the warning "Invalid tags found" produced by dgeni for the annotation decorator.

PR Close angular#50218

docs: fix typo on hydration in Preserve Whitespaces Configuration (angular#50236)
PR Close angular#50236

docs: release notes for the v16.0.1 release

release: cut the v16.1.0-next.0 release

refactor(core): simplify state transfer escaping (angular#50201)

This commit removes unnecessary transfer state escaping and updates this process to be done by the means of a `replacer` and `reviver` method as this removes the need to export the escaping and unescaping methods.

The only thing that we need to escape is `<script` and `</script` which are done by the browsers, but not Node.js.

PR Close angular#50201

build: lock file maintenance (angular#50227)

See associated pull request for more information.

(cherry picked from commit d5f92bd)

PR Close angular#50227

refactor: remove unused benchmarks (angular#50108)

The benchmarks in the 'old' directory are not used / maintained.

PR Close angular#50108

refactor: remove benchpres tests for other frameworks (angular#50108)

Some of the benchpress tests were written against other UI
frameworks (ex.: incremental DOM, initial version of ivy)
and those frameworks are no longer a valuable comparision target.

PR Close angular#50108

docs(docs-infra): Warning message when using absolute links to aio in the documentation (angular#50213)

This commit adds a processor to check for absolute links to angular.io. Absolute links to aio should be avoided because they will appear as external links.

PR Close angular#50213

docs: replace absolute links to aio with relative links. (angular#50213)

This change follows the introduction of the warning message from a transform processor to prevent absolute links to angular.io.

PR Close angular#50213

refactor(elements): remove unnecessary polyfill deps (angular#50115)

`webcomponents/custom-elements` and `document-register-element` are unnecessary now that we support only evergreen browsers.

PR Close angular#50115

build: update dependency firebase-tools to v12 (angular#50223)

See associated pull request for more information.

PR Close angular#50223

fix(core): allow onDestroy unregistration while destroying (angular#50237)

Ensure that all onDestroy callbacks are called by allowing unregistering of onDestroy hooks while destroying.

Fixes angular#50221

PR Close angular#50237

docs: fix v13 dependencies versions. (angular#50243)

Fixing a small mistake.

Fixes angular#50242

PR Close angular#50243

docs: split unsupported versions table in two. (angular#50243)

To ease the maintenance of this table and keep the same number of columns between active and unsupported versions.

PR Close angular#50243

build: bump in-memory-web-api dependency versions (angular#50246)

This commit updates in-memory-web-api package versions from v15 -> v16.

PR Close angular#50246

build: lock file maintenance (angular#49879)

See associated pull request for more information.

PR Close angular#49879

docs: update Angular CLI help [main] (angular#50256)

Updated Angular CLI help contents.

PR Close angular#50256

docs: fix mistake in tutorial (angular#50261)

PR Close angular#50261

build: update dependency @rollup/plugin-commonjs to v25 (angular#50264)

See associated pull request for more information.

PR Close angular#50264

docs: add missing "when" (angular#50262)
PR Close angular#50262

fix(docs-infra): labels with links should have the same font weight (angular#50258)

Fix anchor tag styling inside label.api-status-label to match font weight of label styling that does not have anchor tag.

PR Close angular#50258

build: update all non-major dependencies (angular#50217)

See associated pull request for more information.

PR Close angular#50217

build: share Saucelabs browsers between karma test targets using background Saucelabs daemon and custom karma launcher (angular#49200)

This upgrades the Saucelabs Bazel step on CI to use the more efficient Saucelabs daemon

PR Close angular#49200

build: address review feedback; added scripts/test/run-saucelabs-tests.sh script for local testing (angular#49200)

more chars to meet the linters requirements

PR Close angular#49200

build: address review feedback; should be ready to land now... additional chars to meet commit msg formatting requirements (angular#49200)

plus more additional chars here

PR Close angular#49200

build: don't run saucelabs tests yet on PRs... that will happen in a followup (angular#49200)

additional test to make linter happy

PR Close angular#49200

refactor(core): remove legacy way of preventing default actions (angular#50257)

Setting `returnValue = false` to prevent the default action of events hasn't been necessary since IE9.

PR Close angular#50257

docs: fix inconsistencies in getting started (angular#50275)

Fixes angular#50274

PR Close angular#50275

docs: fix mistake in first-app-lesson-03 (angular#50278)

The correct filename is `home.component.ts`.

fixes angular#50277

PR Close angular#50278

docs(docs-infra): Remove internal constructors from the doc. (angular#50282)

Internal constructor should not be exposed in the doc. This removes them.

Related to angular#50281

PR Close angular#50282

docs(docs-infra): Add a deprecated label to APIs (angular#50287)

This adds a deprecated label next to the other labels on the API pages for methods & properties.

Fixes angular#44265

PR Close angular#50287

docs: Glossary link to N (angular#50294)

The shortcut to N was missing resulting in a rendering issue.

PR Close angular#50294

docs: add Enea to GDE contributors list (angular#50254)

PR Close angular#50254

docs: update events (angular#50309)

Generated `events.json` with the latest events retrieved from the Firebase DB.

PR Close angular#50309

fix(core): allow passing value of any type to `isSignal` function (angular#50035)

Unlike the current signature where the input argument must a function, this change allows an input of any type to be passed to the `isSignal` function.

PR Close angular#50035

refactor(common): Reduce the precision to 2 digits in the ngOptimizedImage distortion warning message (angular#50276)

Using toFixed().

fixes angular#50273

PR Close angular#50276

refactor(core): Improve `ExpressionChangedAfterItHasBeenCheckedError` (angular#50286)

Related to angular#50272 and angular#18970, this improves the error message of NG100 by including the class name of the component where the error was triggered.

PR Close angular#50286

refactor(forms): remove unnecessary Array.from (angular#50314)

The Array.from isn't necessary since we're just iterating over the map keys.

PR Close angular#50314

docs: updated 'conceptual preview' title (angular#50326)
PR Close angular#50326

docs: fix typo in NG0912 error guide (angular#50322)
PR Close angular#50322

docs: fix typo in dependency injection guide (angular#50323)
PR Close angular#50323

docs: fix typo in security guide (angular#50324)
PR Close angular#50324

Revert "fix(core): add additional component metadata to component ID generation (angular#50203)" (angular#50334)

This reverts commit 52c74d3.

The reason for revert: breaking some apps in Google's codebase.

PR Close angular#50334

docs: added wiki link for domain model (angular#50180)

Closes angular#49570

PR Close angular#50180

build: update all non-major dependencies (angular#50316)

See associated pull request for more information.

PR Close angular#50316

docs: update live demo for change detector (angular#50328)

fixes angular#44553

PR Close angular#50328

docs: remove plnkr link from markForCheck example (angular#50328)

PR Close angular#50328

refactor(core): Add a warning when `ApplicationRef.isStable` doesn't emit `true` (angular#50295)

Hydration requires a stable App to run some logic.
With this warning developers will be informed about potential issues encountered when running an unstable app.

Fixes angular#50285

PR Close angular#50295

fix(core): add additional component metadata to component ID generation (angular#50336)

This commit add `exportAs`, `signals`, `inputs` and `outputs` into account when generating a component ID.

Co-authored-by: alan-agius4 <17563226+alan-agius4@users.noreply.github.com>

PR Close angular#50336

docs: release notes for the v16.0.2 release

release: cut the v16.1.0-next.1 release

docs: fixed typo
jessicajaniuk pushed a commit that referenced this issue May 19, 2023
Closes #49686

Revert "docs(docs-infra): Remove unused annotation template (#50114)" (#50206)

This reverts commit a1ca162.

This commit causes failures in g3, because `@Annotation` is load-bearing for
tsickle's decorator downleveling transformation.

PR Close #50206

refactor(compiler): generate ng-container instructions (#50008)

ElementContainer instructions refer to `ng-container` element tags, which don't produce corresponding DOM nodes. Much like element instructions, container instructions can also have their start and end tags combined.

Co-authored-by: Alex Rickabaugh <alxhub@users.noreply.github.com>
Co-authored-by: Andrew Scott <atscott@users.noreply.github.com>

PR Close #50008

refactor(compiler): handle binary operators (#50008)

We should be able to ingest binary operators. This involves parsing the left and right ASTs, and converting the operator string to a logical `BinaryOperator`.

Co-authored-by: Alex Rickabaugh <alxhub@users.noreply.github.com>

PR Close #50008

refactor(compiler): handle chains in event listeners (#50008)

It's possible to have chains of statements, exclusively in event listeners. A listener with a chain looks like the following:

```
(click)="onClick($event); 1 == 1"
```

We handle this by generating multiple statements, one for each expression in the chain, and only making the final statement the return statement. We place this logic in code specific to listeners, since they are the only place this construct can appear.

Co-authored-by: Alex Rickabaugh <alxhub@users.noreply.github.com>

PR Close #50008

refactor(compiler): generate property instructions for `ng-template` inputs (#50008)

When ingesting an `ng-template`, inputs might be on the `inputs` or the `templateAttrs` field. More investigation is required to pinpoint the specifics of `templateAttrs`.

For now, we can process them both and generate the appropriate update-mode property instructions.

Co-authored-by: Alex Rickabaugh <alxhub@users.noreply.github.com>

PR Close #50008

refactor(compiler): support `KeyedRead` expressions (#50008)

The compiler can now accept key read expressions (e.g. `foo[bar]`), where both the receiver and index are sub-expressions.

PR Close #50008

refactor(compiler): extract save/restore view logic to separate phase (#50008)

Saving and restoring the view is significant enough that it makes sense to handle it independently. This makes for easier reasoning about how view save/restore works.
Co-authored-by: Alex Rickabaugh <alxhub@users.noreply.github.com>

PR Close #50008

refactor(core): remove webworker related checks on `assertDomNode` (#50061)

Since the drop of the webworker platform the node can't be a `WebWorkerRenderNode`.

PR Close #50061

refactor(platform-server): import `xhr2` dynamically in the ServerXhr class (#50095)

This commit updates the `@angular/common/http` and `@angular/platform-server` packages to allow dynamic import of the `xhr2` dependency. The `xhr2` dependency has side-effects that rely on a global scope and as a result in some environments those side-effectful calls fail. With the changes from this PR, the import is delayed until it's actually needed, which gives a chance for the underlying platform to setup global scope (via shims) as needed.

Co-authored-by: alan-agius4 <17563226+alan-agius4@users.noreply.github.com>

PR Close #50095

build: remove unused deps (#50116)

* All `@types` package removed have typings in their package.
* brotli is unused
* tmp is unused
* vlq is unused

PR Close #50116

fix(core): bootstrapApplication call not rejected when error is thrown in importProvidersFrom module (#50120)

Fixes that the promise returned by `bootstrapApplication` wasn't being rejected when a module imported using `importProvidersFrom` throws an error. The problem was that the function that resolves the providers happens very early as the injector is being constructed.

Fixes #49923.

PR Close #50120

docs(forms): warn the user about getting old values and show how to avoid (#50123)
PR Close #50123

docs(forms): warn the user about getting old values and show how to avoid (#50123)

Co-authored-by: Andrew Kushnir <43554145+AndrewKushnir@users.noreply.github.com>
PR Close #50123

docs(forms): warn the user about getting old values and show how to avoid (#50123)

PR Close #50123

refactor(core): Throw an error when the document is not initialized. (#50143)

In case the document is accessed but not available we should throw ASAP an error to prevent non explicit errors.

PR Close #50143

fix(core): only try to retrieve transferred state on the browser (#50144)

Prior to this commit we tried to retrieve transferred state on both browser and server. Doing this on the server was redundant and could causes issues as `document` might be undefined.

Closes #50138

PR Close #50144

build: update dependency https-proxy-agent to v6 (#50152)

See associated pull request for more information.

PR Close #50152

docs: changed component name to home.component.ts in point 2 of step 3 (#50170)

PR Close #50170

docs: fix obs variable name to obs$ (#50196)

PR Close #50196

docs: Fixed Spelling 'servivce' to 'service' (#50204)

PR Close #50204

docs: fix filename in first-app (#50207)

Same mistake as #50204 but a different file.

PR Close #50207

refactor(core): Update CD traversal to use 'modes' (#50005)

Rather than maintaining separate traversal functions that act differently, this change
updates the change detection traversal to share more code and use different modes
to control the type of traversal being performed.

PR Close #50005

docs: delete aborted documentation files (#49962)

Those files were created as part of #47391 but the content was never merged.

PR Close #49962

refactor(compiler): Remove unused TransformVisitor & NullVisitor (#48646)

NullVisitor & TransformVisitor are unused and unexported outside the compiler package, we can remove them.

PR Close #48646

build: lock file maintenance (#49914)

See associated pull request for more information.

PR Close #49914

test(zone.js): update zone.js test for jasmine upgrade (#49914)

Update test cases to pass jasmine 6.x update.

PR Close #49914

refactor(common): cleanup platformLocation (#50054)

* Drop the usage of @Inject()
* Drop `supportsState` as its supported by evergreen browsers.

PR Close #50054

refactor(compiler): introduce internal transplanted type (#50104)

Adds a new AST for a `TransplantedType` in the compiler which will be used for some upcoming work. A transplanted type is a type node that is defined in one place in the app, but needs to be copied to a different one (e.g. the generated .d.ts). These changes also include updates to the type translator that will rewrite any type references within the type to point to the new context file.

PR Close #50104

build(devtools): make sure linker runs on fesm2022 bundles (#50086)

Since DevTools' Angular framework dependencies are built from local files, they are always up to date. [Recently](#49332) these dependencies started being published as fesm2022 instead of fesm2020. We also have an Angular dependency `ngx-flamegraph` that was built and published as fesm2020.

The easiest fix to make sure all of our Angular based dependencies are processed by the linker would be to update the filterPaths field in that file from `/fesm2020/` to `/fesm2020|fesm2022/`. When v16 releases, we can update ngx-flamegraph and publish it with the new APF, letting us change filterPaths to just `/fesm2022/`.

PR Close #50086

build(devtools): target es2020 explicitly (#50086)

We do this because of a bug caused by evanw/esbuild#2950 and a recent change to how angular static properties are attached to class constructors. Targeting esnext or es2022 will cause the static initializer blocks that attach these static properties on class constructors to reference a class constructor variable that they do not have access to.

Because of this we explicitly target es2020 in our Angular DevTools builds.

PR Close #50086

docs: update releases guide for v16 (#50128)

Also clarify that the deprecations guide is for _noteworthy_ deprecations and may not be comprehensive.

PR Close #50128

docs: update starter lesson to contain example images from the start (#50212)

We received feedback that the starter lesson should also include the stock images.

PR Close #50212

fix(core): handle hydration of root components with injected ViewContainerRef (#50136)

This commit fixes an issue where a root component with an injected ViewContainerRef (for ex. `inject(ViewContainerRef)`) was triggering a certain code path during hydration which didn't handle this case correctly.

Resolves #50133.

PR Close #50136

feat(core): support TypeScript 5.1 (#50156)

Updates the project to support building with TypeScript 5.1.

PR Close #50156

docs: standalone component preloading config (#50193)

The preloading modules documentation were missing information about how to apply preloading strategies to standalone application  ( `ng new AppName --standalone` ).
Feel free to fix anything not in line with the Angular documentation style guide, as this is my first attempt at contributing :)

- Added example for `app.config.ts` providing info on the `withPreloading(<preloading strategy>)` you can add to the `provideRouter()` RouterFeatures.
- Specified that preloading modules also applies for standalone components.
PR Close #50193

refactor(router): remove private export of `withPreloading` (#50194)

`withPreloading` is part of the public API.

PR Close #50194

fix(core): handle projection of hydrated containters into components that skip hydration (#50199)

This commit updates hydration logic to support a scenario where a view container that was hydrated and later on projected to a component that skips hydration. Currently, such projected content is extracted from the DOM (since a component that skips hydration needs to be re-created), but never added back, since the current logic treats such content as "already inserted".

Closes #50175.

PR Close #50199

fix(core): add additional component metadata to component ID generation (#50203)

This commit add `exportAs`, `signals`, `inputs` and `outputs` into account when generating a component ID.

See: #50158 (comment)

PR Close #50203

docs: fix link label. (#50209)

Removing a duplicate https protocol.

PR Close #50209

docs: fix typos on first-app tutorial (#50211)

PR Close #50211

refactor(core): drop `next` prefix from hydration guide link (#50214)

This commit updates the content of the console log to drop the `next.` prefix from hydration guide link.

PR Close #50214

build: update github/codeql-action action to v2.3.3 (#50216)

See associated pull request for more information.

PR Close #50216

docs(docs-infra): Remove warning for `@Annotation`. (#50218)

Per #50206, `@Annotation` is needed for tsickle. This commit removes the warning "Invalid tags found" produced by dgeni for the annotation decorator.

PR Close #50218

docs: fix typo on hydration in Preserve Whitespaces Configuration (#50236)
PR Close #50236

docs: release notes for the v16.0.1 release

release: cut the v16.1.0-next.0 release

refactor(core): simplify state transfer escaping (#50201)

This commit removes unnecessary transfer state escaping and updates this process to be done by the means of a `replacer` and `reviver` method as this removes the need to export the escaping and unescaping methods.

The only thing that we need to escape is `<script` and `</script` which are done by the browsers, but not Node.js.

PR Close #50201

build: lock file maintenance (#50227)

See associated pull request for more information.

(cherry picked from commit d5f92bd)

PR Close #50227

refactor: remove unused benchmarks (#50108)

The benchmarks in the 'old' directory are not used / maintained.

PR Close #50108

refactor: remove benchpres tests for other frameworks (#50108)

Some of the benchpress tests were written against other UI
frameworks (ex.: incremental DOM, initial version of ivy)
and those frameworks are no longer a valuable comparision target.

PR Close #50108

docs(docs-infra): Warning message when using absolute links to aio in the documentation (#50213)

This commit adds a processor to check for absolute links to angular.io. Absolute links to aio should be avoided because they will appear as external links.

PR Close #50213

docs: replace absolute links to aio with relative links. (#50213)

This change follows the introduction of the warning message from a transform processor to prevent absolute links to angular.io.

PR Close #50213

refactor(elements): remove unnecessary polyfill deps (#50115)

`webcomponents/custom-elements` and `document-register-element` are unnecessary now that we support only evergreen browsers.

PR Close #50115

build: update dependency firebase-tools to v12 (#50223)

See associated pull request for more information.

PR Close #50223

fix(core): allow onDestroy unregistration while destroying (#50237)

Ensure that all onDestroy callbacks are called by allowing unregistering of onDestroy hooks while destroying.

Fixes #50221

PR Close #50237

docs: fix v13 dependencies versions. (#50243)

Fixing a small mistake.

Fixes #50242

PR Close #50243

docs: split unsupported versions table in two. (#50243)

To ease the maintenance of this table and keep the same number of columns between active and unsupported versions.

PR Close #50243

build: bump in-memory-web-api dependency versions (#50246)

This commit updates in-memory-web-api package versions from v15 -> v16.

PR Close #50246

build: lock file maintenance (#49879)

See associated pull request for more information.

PR Close #49879

docs: update Angular CLI help [main] (#50256)

Updated Angular CLI help contents.

PR Close #50256

docs: fix mistake in tutorial (#50261)

PR Close #50261

build: update dependency @rollup/plugin-commonjs to v25 (#50264)

See associated pull request for more information.

PR Close #50264

docs: add missing "when" (#50262)
PR Close #50262

fix(docs-infra): labels with links should have the same font weight (#50258)

Fix anchor tag styling inside label.api-status-label to match font weight of label styling that does not have anchor tag.

PR Close #50258

build: update all non-major dependencies (#50217)

See associated pull request for more information.

PR Close #50217

build: share Saucelabs browsers between karma test targets using background Saucelabs daemon and custom karma launcher (#49200)

This upgrades the Saucelabs Bazel step on CI to use the more efficient Saucelabs daemon

PR Close #49200

build: address review feedback; added scripts/test/run-saucelabs-tests.sh script for local testing (#49200)

more chars to meet the linters requirements

PR Close #49200

build: address review feedback; should be ready to land now... additional chars to meet commit msg formatting requirements (#49200)

plus more additional chars here

PR Close #49200

build: don't run saucelabs tests yet on PRs... that will happen in a followup (#49200)

additional test to make linter happy

PR Close #49200

refactor(core): remove legacy way of preventing default actions (#50257)

Setting `returnValue = false` to prevent the default action of events hasn't been necessary since IE9.

PR Close #50257

docs: fix inconsistencies in getting started (#50275)

Fixes #50274

PR Close #50275

docs: fix mistake in first-app-lesson-03 (#50278)

The correct filename is `home.component.ts`.

fixes #50277

PR Close #50278

docs(docs-infra): Remove internal constructors from the doc. (#50282)

Internal constructor should not be exposed in the doc. This removes them.

Related to #50281

PR Close #50282

docs(docs-infra): Add a deprecated label to APIs (#50287)

This adds a deprecated label next to the other labels on the API pages for methods & properties.

Fixes #44265

PR Close #50287

docs: Glossary link to N (#50294)

The shortcut to N was missing resulting in a rendering issue.

PR Close #50294

docs: add Enea to GDE contributors list (#50254)

PR Close #50254

docs: update events (#50309)

Generated `events.json` with the latest events retrieved from the Firebase DB.

PR Close #50309

fix(core): allow passing value of any type to `isSignal` function (#50035)

Unlike the current signature where the input argument must a function, this change allows an input of any type to be passed to the `isSignal` function.

PR Close #50035

refactor(common): Reduce the precision to 2 digits in the ngOptimizedImage distortion warning message (#50276)

Using toFixed().

fixes #50273

PR Close #50276

refactor(core): Improve `ExpressionChangedAfterItHasBeenCheckedError` (#50286)

Related to #50272 and #18970, this improves the error message of NG100 by including the class name of the component where the error was triggered.

PR Close #50286

refactor(forms): remove unnecessary Array.from (#50314)

The Array.from isn't necessary since we're just iterating over the map keys.

PR Close #50314

docs: updated 'conceptual preview' title (#50326)
PR Close #50326

docs: fix typo in NG0912 error guide (#50322)
PR Close #50322

docs: fix typo in dependency injection guide (#50323)
PR Close #50323

docs: fix typo in security guide (#50324)
PR Close #50324

Revert "fix(core): add additional component metadata to component ID generation (#50203)" (#50334)

This reverts commit 52c74d3.

The reason for revert: breaking some apps in Google's codebase.

PR Close #50334

docs: added wiki link for domain model (#50180)

Closes #49570

PR Close #50180

build: update all non-major dependencies (#50316)

See associated pull request for more information.

PR Close #50316

docs: update live demo for change detector (#50328)

fixes #44553

PR Close #50328

docs: remove plnkr link from markForCheck example (#50328)

PR Close #50328

refactor(core): Add a warning when `ApplicationRef.isStable` doesn't emit `true` (#50295)

Hydration requires a stable App to run some logic.
With this warning developers will be informed about potential issues encountered when running an unstable app.

Fixes #50285

PR Close #50295

fix(core): add additional component metadata to component ID generation (#50336)

This commit add `exportAs`, `signals`, `inputs` and `outputs` into account when generating a component ID.

Co-authored-by: alan-agius4 <17563226+alan-agius4@users.noreply.github.com>

PR Close #50336

docs: release notes for the v16.0.2 release

release: cut the v16.1.0-next.1 release

docs: fixed typo

PR Close #50145
jessicajaniuk pushed a commit that referenced this issue May 19, 2023
Closes #49686

Revert "docs(docs-infra): Remove unused annotation template (#50114)" (#50206)

This reverts commit a1ca162.

This commit causes failures in g3, because `@Annotation` is load-bearing for
tsickle's decorator downleveling transformation.

PR Close #50206

refactor(compiler): generate ng-container instructions (#50008)

ElementContainer instructions refer to `ng-container` element tags, which don't produce corresponding DOM nodes. Much like element instructions, container instructions can also have their start and end tags combined.

Co-authored-by: Alex Rickabaugh <alxhub@users.noreply.github.com>
Co-authored-by: Andrew Scott <atscott@users.noreply.github.com>

PR Close #50008

refactor(compiler): handle binary operators (#50008)

We should be able to ingest binary operators. This involves parsing the left and right ASTs, and converting the operator string to a logical `BinaryOperator`.

Co-authored-by: Alex Rickabaugh <alxhub@users.noreply.github.com>

PR Close #50008

refactor(compiler): handle chains in event listeners (#50008)

It's possible to have chains of statements, exclusively in event listeners. A listener with a chain looks like the following:

```
(click)="onClick($event); 1 == 1"
```

We handle this by generating multiple statements, one for each expression in the chain, and only making the final statement the return statement. We place this logic in code specific to listeners, since they are the only place this construct can appear.

Co-authored-by: Alex Rickabaugh <alxhub@users.noreply.github.com>

PR Close #50008

refactor(compiler): generate property instructions for `ng-template` inputs (#50008)

When ingesting an `ng-template`, inputs might be on the `inputs` or the `templateAttrs` field. More investigation is required to pinpoint the specifics of `templateAttrs`.

For now, we can process them both and generate the appropriate update-mode property instructions.

Co-authored-by: Alex Rickabaugh <alxhub@users.noreply.github.com>

PR Close #50008

refactor(compiler): support `KeyedRead` expressions (#50008)

The compiler can now accept key read expressions (e.g. `foo[bar]`), where both the receiver and index are sub-expressions.

PR Close #50008

refactor(compiler): extract save/restore view logic to separate phase (#50008)

Saving and restoring the view is significant enough that it makes sense to handle it independently. This makes for easier reasoning about how view save/restore works.
Co-authored-by: Alex Rickabaugh <alxhub@users.noreply.github.com>

PR Close #50008

refactor(core): remove webworker related checks on `assertDomNode` (#50061)

Since the drop of the webworker platform the node can't be a `WebWorkerRenderNode`.

PR Close #50061

refactor(platform-server): import `xhr2` dynamically in the ServerXhr class (#50095)

This commit updates the `@angular/common/http` and `@angular/platform-server` packages to allow dynamic import of the `xhr2` dependency. The `xhr2` dependency has side-effects that rely on a global scope and as a result in some environments those side-effectful calls fail. With the changes from this PR, the import is delayed until it's actually needed, which gives a chance for the underlying platform to setup global scope (via shims) as needed.

Co-authored-by: alan-agius4 <17563226+alan-agius4@users.noreply.github.com>

PR Close #50095

build: remove unused deps (#50116)

* All `@types` package removed have typings in their package.
* brotli is unused
* tmp is unused
* vlq is unused

PR Close #50116

fix(core): bootstrapApplication call not rejected when error is thrown in importProvidersFrom module (#50120)

Fixes that the promise returned by `bootstrapApplication` wasn't being rejected when a module imported using `importProvidersFrom` throws an error. The problem was that the function that resolves the providers happens very early as the injector is being constructed.

Fixes #49923.

PR Close #50120

docs(forms): warn the user about getting old values and show how to avoid (#50123)
PR Close #50123

docs(forms): warn the user about getting old values and show how to avoid (#50123)

Co-authored-by: Andrew Kushnir <43554145+AndrewKushnir@users.noreply.github.com>
PR Close #50123

docs(forms): warn the user about getting old values and show how to avoid (#50123)

PR Close #50123

refactor(core): Throw an error when the document is not initialized. (#50143)

In case the document is accessed but not available we should throw ASAP an error to prevent non explicit errors.

PR Close #50143

fix(core): only try to retrieve transferred state on the browser (#50144)

Prior to this commit we tried to retrieve transferred state on both browser and server. Doing this on the server was redundant and could causes issues as `document` might be undefined.

Closes #50138

PR Close #50144

build: update dependency https-proxy-agent to v6 (#50152)

See associated pull request for more information.

PR Close #50152

docs: changed component name to home.component.ts in point 2 of step 3 (#50170)

PR Close #50170

docs: fix obs variable name to obs$ (#50196)

PR Close #50196

docs: Fixed Spelling 'servivce' to 'service' (#50204)

PR Close #50204

docs: fix filename in first-app (#50207)

Same mistake as #50204 but a different file.

PR Close #50207

refactor(core): Update CD traversal to use 'modes' (#50005)

Rather than maintaining separate traversal functions that act differently, this change
updates the change detection traversal to share more code and use different modes
to control the type of traversal being performed.

PR Close #50005

docs: delete aborted documentation files (#49962)

Those files were created as part of #47391 but the content was never merged.

PR Close #49962

refactor(compiler): Remove unused TransformVisitor & NullVisitor (#48646)

NullVisitor & TransformVisitor are unused and unexported outside the compiler package, we can remove them.

PR Close #48646

build: lock file maintenance (#49914)

See associated pull request for more information.

PR Close #49914

test(zone.js): update zone.js test for jasmine upgrade (#49914)

Update test cases to pass jasmine 6.x update.

PR Close #49914

refactor(common): cleanup platformLocation (#50054)

* Drop the usage of @Inject()
* Drop `supportsState` as its supported by evergreen browsers.

PR Close #50054

refactor(compiler): introduce internal transplanted type (#50104)

Adds a new AST for a `TransplantedType` in the compiler which will be used for some upcoming work. A transplanted type is a type node that is defined in one place in the app, but needs to be copied to a different one (e.g. the generated .d.ts). These changes also include updates to the type translator that will rewrite any type references within the type to point to the new context file.

PR Close #50104

build(devtools): make sure linker runs on fesm2022 bundles (#50086)

Since DevTools' Angular framework dependencies are built from local files, they are always up to date. [Recently](#49332) these dependencies started being published as fesm2022 instead of fesm2020. We also have an Angular dependency `ngx-flamegraph` that was built and published as fesm2020.

The easiest fix to make sure all of our Angular based dependencies are processed by the linker would be to update the filterPaths field in that file from `/fesm2020/` to `/fesm2020|fesm2022/`. When v16 releases, we can update ngx-flamegraph and publish it with the new APF, letting us change filterPaths to just `/fesm2022/`.

PR Close #50086

build(devtools): target es2020 explicitly (#50086)

We do this because of a bug caused by evanw/esbuild#2950 and a recent change to how angular static properties are attached to class constructors. Targeting esnext or es2022 will cause the static initializer blocks that attach these static properties on class constructors to reference a class constructor variable that they do not have access to.

Because of this we explicitly target es2020 in our Angular DevTools builds.

PR Close #50086

docs: update releases guide for v16 (#50128)

Also clarify that the deprecations guide is for _noteworthy_ deprecations and may not be comprehensive.

PR Close #50128

docs: update starter lesson to contain example images from the start (#50212)

We received feedback that the starter lesson should also include the stock images.

PR Close #50212

fix(core): handle hydration of root components with injected ViewContainerRef (#50136)

This commit fixes an issue where a root component with an injected ViewContainerRef (for ex. `inject(ViewContainerRef)`) was triggering a certain code path during hydration which didn't handle this case correctly.

Resolves #50133.

PR Close #50136

feat(core): support TypeScript 5.1 (#50156)

Updates the project to support building with TypeScript 5.1.

PR Close #50156

docs: standalone component preloading config (#50193)

The preloading modules documentation were missing information about how to apply preloading strategies to standalone application  ( `ng new AppName --standalone` ).
Feel free to fix anything not in line with the Angular documentation style guide, as this is my first attempt at contributing :)

- Added example for `app.config.ts` providing info on the `withPreloading(<preloading strategy>)` you can add to the `provideRouter()` RouterFeatures.
- Specified that preloading modules also applies for standalone components.
PR Close #50193

refactor(router): remove private export of `withPreloading` (#50194)

`withPreloading` is part of the public API.

PR Close #50194

fix(core): handle projection of hydrated containters into components that skip hydration (#50199)

This commit updates hydration logic to support a scenario where a view container that was hydrated and later on projected to a component that skips hydration. Currently, such projected content is extracted from the DOM (since a component that skips hydration needs to be re-created), but never added back, since the current logic treats such content as "already inserted".

Closes #50175.

PR Close #50199

fix(core): add additional component metadata to component ID generation (#50203)

This commit add `exportAs`, `signals`, `inputs` and `outputs` into account when generating a component ID.

See: #50158 (comment)

PR Close #50203

docs: fix link label. (#50209)

Removing a duplicate https protocol.

PR Close #50209

docs: fix typos on first-app tutorial (#50211)

PR Close #50211

refactor(core): drop `next` prefix from hydration guide link (#50214)

This commit updates the content of the console log to drop the `next.` prefix from hydration guide link.

PR Close #50214

build: update github/codeql-action action to v2.3.3 (#50216)

See associated pull request for more information.

PR Close #50216

docs(docs-infra): Remove warning for `@Annotation`. (#50218)

Per #50206, `@Annotation` is needed for tsickle. This commit removes the warning "Invalid tags found" produced by dgeni for the annotation decorator.

PR Close #50218

docs: fix typo on hydration in Preserve Whitespaces Configuration (#50236)
PR Close #50236

docs: release notes for the v16.0.1 release

release: cut the v16.1.0-next.0 release

refactor(core): simplify state transfer escaping (#50201)

This commit removes unnecessary transfer state escaping and updates this process to be done by the means of a `replacer` and `reviver` method as this removes the need to export the escaping and unescaping methods.

The only thing that we need to escape is `<script` and `</script` which are done by the browsers, but not Node.js.

PR Close #50201

build: lock file maintenance (#50227)

See associated pull request for more information.

(cherry picked from commit d5f92bd)

PR Close #50227

refactor: remove unused benchmarks (#50108)

The benchmarks in the 'old' directory are not used / maintained.

PR Close #50108

refactor: remove benchpres tests for other frameworks (#50108)

Some of the benchpress tests were written against other UI
frameworks (ex.: incremental DOM, initial version of ivy)
and those frameworks are no longer a valuable comparision target.

PR Close #50108

docs(docs-infra): Warning message when using absolute links to aio in the documentation (#50213)

This commit adds a processor to check for absolute links to angular.io. Absolute links to aio should be avoided because they will appear as external links.

PR Close #50213

docs: replace absolute links to aio with relative links. (#50213)

This change follows the introduction of the warning message from a transform processor to prevent absolute links to angular.io.

PR Close #50213

refactor(elements): remove unnecessary polyfill deps (#50115)

`webcomponents/custom-elements` and `document-register-element` are unnecessary now that we support only evergreen browsers.

PR Close #50115

build: update dependency firebase-tools to v12 (#50223)

See associated pull request for more information.

PR Close #50223

fix(core): allow onDestroy unregistration while destroying (#50237)

Ensure that all onDestroy callbacks are called by allowing unregistering of onDestroy hooks while destroying.

Fixes #50221

PR Close #50237

docs: fix v13 dependencies versions. (#50243)

Fixing a small mistake.

Fixes #50242

PR Close #50243

docs: split unsupported versions table in two. (#50243)

To ease the maintenance of this table and keep the same number of columns between active and unsupported versions.

PR Close #50243

build: bump in-memory-web-api dependency versions (#50246)

This commit updates in-memory-web-api package versions from v15 -> v16.

PR Close #50246

build: lock file maintenance (#49879)

See associated pull request for more information.

PR Close #49879

docs: update Angular CLI help [main] (#50256)

Updated Angular CLI help contents.

PR Close #50256

docs: fix mistake in tutorial (#50261)

PR Close #50261

build: update dependency @rollup/plugin-commonjs to v25 (#50264)

See associated pull request for more information.

PR Close #50264

docs: add missing "when" (#50262)
PR Close #50262

fix(docs-infra): labels with links should have the same font weight (#50258)

Fix anchor tag styling inside label.api-status-label to match font weight of label styling that does not have anchor tag.

PR Close #50258

build: update all non-major dependencies (#50217)

See associated pull request for more information.

PR Close #50217

build: share Saucelabs browsers between karma test targets using background Saucelabs daemon and custom karma launcher (#49200)

This upgrades the Saucelabs Bazel step on CI to use the more efficient Saucelabs daemon

PR Close #49200

build: address review feedback; added scripts/test/run-saucelabs-tests.sh script for local testing (#49200)

more chars to meet the linters requirements

PR Close #49200

build: address review feedback; should be ready to land now... additional chars to meet commit msg formatting requirements (#49200)

plus more additional chars here

PR Close #49200

build: don't run saucelabs tests yet on PRs... that will happen in a followup (#49200)

additional test to make linter happy

PR Close #49200

refactor(core): remove legacy way of preventing default actions (#50257)

Setting `returnValue = false` to prevent the default action of events hasn't been necessary since IE9.

PR Close #50257

docs: fix inconsistencies in getting started (#50275)

Fixes #50274

PR Close #50275

docs: fix mistake in first-app-lesson-03 (#50278)

The correct filename is `home.component.ts`.

fixes #50277

PR Close #50278

docs(docs-infra): Remove internal constructors from the doc. (#50282)

Internal constructor should not be exposed in the doc. This removes them.

Related to #50281

PR Close #50282

docs(docs-infra): Add a deprecated label to APIs (#50287)

This adds a deprecated label next to the other labels on the API pages for methods & properties.

Fixes #44265

PR Close #50287

docs: Glossary link to N (#50294)

The shortcut to N was missing resulting in a rendering issue.

PR Close #50294

docs: add Enea to GDE contributors list (#50254)

PR Close #50254

docs: update events (#50309)

Generated `events.json` with the latest events retrieved from the Firebase DB.

PR Close #50309

fix(core): allow passing value of any type to `isSignal` function (#50035)

Unlike the current signature where the input argument must a function, this change allows an input of any type to be passed to the `isSignal` function.

PR Close #50035

refactor(common): Reduce the precision to 2 digits in the ngOptimizedImage distortion warning message (#50276)

Using toFixed().

fixes #50273

PR Close #50276

refactor(core): Improve `ExpressionChangedAfterItHasBeenCheckedError` (#50286)

Related to #50272 and #18970, this improves the error message of NG100 by including the class name of the component where the error was triggered.

PR Close #50286

refactor(forms): remove unnecessary Array.from (#50314)

The Array.from isn't necessary since we're just iterating over the map keys.

PR Close #50314

docs: updated 'conceptual preview' title (#50326)
PR Close #50326

docs: fix typo in NG0912 error guide (#50322)
PR Close #50322

docs: fix typo in dependency injection guide (#50323)
PR Close #50323

docs: fix typo in security guide (#50324)
PR Close #50324

Revert "fix(core): add additional component metadata to component ID generation (#50203)" (#50334)

This reverts commit 52c74d3.

The reason for revert: breaking some apps in Google's codebase.

PR Close #50334

docs: added wiki link for domain model (#50180)

Closes #49570

PR Close #50180

build: update all non-major dependencies (#50316)

See associated pull request for more information.

PR Close #50316

docs: update live demo for change detector (#50328)

fixes #44553

PR Close #50328

docs: remove plnkr link from markForCheck example (#50328)

PR Close #50328

refactor(core): Add a warning when `ApplicationRef.isStable` doesn't emit `true` (#50295)

Hydration requires a stable App to run some logic.
With this warning developers will be informed about potential issues encountered when running an unstable app.

Fixes #50285

PR Close #50295

fix(core): add additional component metadata to component ID generation (#50336)

This commit add `exportAs`, `signals`, `inputs` and `outputs` into account when generating a component ID.

Co-authored-by: alan-agius4 <17563226+alan-agius4@users.noreply.github.com>

PR Close #50336

docs: release notes for the v16.0.2 release

release: cut the v16.1.0-next.1 release

docs: fixed typo

PR Close #50145
@AndrewKushnir
Copy link
Contributor

Closing this ticket in favor of #34454.

@angular-automatic-lock-bot
Copy link

This issue has been automatically locked due to inactivity.
Please file a new issue if you are encountering a similar or related problem.

Read more about our automatic conversation locking policy.

This action has been performed automatically by a bot.

@angular-automatic-lock-bot angular-automatic-lock-bot bot locked and limited conversation to collaborators Jul 30, 2023
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
area: core Issues related to the framework runtime core: change detection feature: under consideration Feature request for which voting has completed and the request is now under consideration feature Issue that requests a new feature hotlist: error messages
Projects
None yet
Development

No branches or pull requests

10 participants