Skip to content

feat(compiler-cli): make NG8031 an error - #2

Closed
Flarette wants to merge 1 commit into
feat/ignored-bindingfrom
feat/ignored-binding-errors
Closed

Flarette wants to merge 1 commit into
feat/ignored-bindingfrom
feat/ignored-binding-errors

Conversation

@Flarette

@Flarette Flarette commented Nov 8, 2026 •

Copy link
Copy Markdown
Owner

Depends on #1. Review only the last commit; the first one is #1.

PR Checklist

Please check if your PR fulfills the following requirements:

PR Type

What kind of change does this PR introduce?

  • Bugfix
  • Feature
  • Code style update (formatting, local variables)
  • Refactoring (no functional changes, no api changes)
  • Build related changes
  • CI related changes
  • Documentation content changes
  • angular.dev application / infrastructure changes
  • Other... Please describe:

What is the current behavior?

After #1, NG8031 is a warning, and NG0319 only logs, even under errorOnUnknownProperties. An
unclaimed event on <ng-container> gets both NG8030 (with strictUnclaimedEventNames) and NG8031.

Issue Number: N/A (issue draft not posted yet)

What is the new behavior?

This changes severities only; what gets reported stays as in #1.

  • NG8031 is an error by default. While it's on, NG8030 skips <ng-container>, so each ignored
    event gets one error.
  • NG0319 throws under errorOnUnknownProperties, like NG0303.

Does this PR introduce a breaking change?

  • Yes
  • No

With strictTemplates, a binding or static attribute that NG8031 reports stops compiling,
including a property binding on <ng-container> under NO_ERRORS_SCHEMA. Each error points at a
binding that never had an effect.

Tests that use errorOnUnknownProperties fail on NG0319.

Migration: remove the binding, move it to an element, or import the directive that claims it. To
report NG8031 as a warning while migrating, set extendedDiagnostics.checks.ignoredBinding to
"warning".

Other information

  • All 172 ng_project targets in this repo build with this change.
  • Independent of feat(compiler-cli): make NG8032 an error #4 (NG8032 as an error); either can land first.
  • Is this fine for a minor release, or should it wait for a major?

@Flarette
Flarette added this pull request to stack #3 November 8, 2026 11:26
@Flarette
Flarette force-pushed the feat/ignored-binding-errors branch from 0b5ef33 to 9f8a914 Compare November 8, 2026 13:17
Report bindings that <ng-container>, <ng-template>, and <ng-content>
ignore as errors, since they never take effect.

- NG8031 (`ignoredBinding`) is now an error by default. While it's on,
  NG8030 skips <ng-container>, so each ignored event is reported once.
- NG0319 now throws under `errorOnUnknownProperties`, like NG0303.

BREAKING CHANGE: Bindings that have no effect are now errors

With strictTemplates, a binding that <ng-container>, <ng-template>,
or <ng-content> ignores, or a static attribute on them that nothing
reads, now fails to compile with NG8031. This includes property
bindings on <ng-container> under NO_ERRORS_SCHEMA.

Tests that use `errorOnUnknownProperties` now fail on NG0319.

Each error points at a binding that never had an effect. Remove the
binding, move it to an element, or add the directive that claims it
to the component's imports. To report NG8031 as a warning while you
migrate, set `extendedDiagnostics.checks.ignoredBinding` to
`"warning"`.
@Flarette

Flarette commented Nov 8, 2026

Copy link
Copy Markdown
Owner Author

Superseded by the upstream PRs angular#71882, angular#71883, and angular#71884.

@Flarette Flarette closed this Nov 8, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant