Command
build
Is this a regression?
The previous version in which this bug was not present was
No response
Description
Found while tesing #34106 cc @alan-agius4
With warm .angular/cache, editing only a components external template skips template type-checking: broken template builds with exit 0 and ends up in FESM.
Cold build fails correctly and so does ng-packagr in same setup.
Worst in CI where caches are restored
Minimal Reproduction
- Library with one component using
templateUrl, strictTemplates on
ng build mylib passes and fills .angular/cache
- Edit only the template to
<p>{{ nope }}</p>
ng build mylib again. getting exit 0 broken template in fesm2022/mylib.mjs
rm -rf .angular/cache then build again, getting TS2339 as expected
P.S. Same on ngwr: [hidden]="notAProperty" in alert.html builds with a warm cache.
Exception or Error
Your Environment
@angular/build built from #34106 (e1fa5796) with the repo's own bazel build
Angular CLI 22.1.8,
Angular 22.1.7,
Node 24.16.0,
pnpm 11,
macOS 25.6,
14 cores,
24 GB
Anything else relevant?
library-compilation.ts only type-checks files in affectedFiles from the restored builder program, and TS doesn't know about .html, so nothing is checked.
aot-compilation.ts handles this with usingBuildInfo / includeTTC in findAffectedFiles;
porting that locally fixed it (warm + broken fails, warm + valid still passes and re-emits).
Command
build
Is this a regression?
The previous version in which this bug was not present was
No response
Description
Found while tesing #34106 cc @alan-agius4
With warm
.angular/cache, editing only a components external template skips template type-checking: broken template builds with exit 0 and ends up in FESM.Cold build fails correctly and so does ng-packagr in same setup.
Worst in CI where caches are restored
Minimal Reproduction
templateUrl,strictTemplatesonng build mylibpasses and fills.angular/cache<p>{{ nope }}</p>ng build mylibagain. gettingexit 0broken template infesm2022/mylib.mjsrm -rf .angular/cachethen build again, getting TS2339 as expectedP.S. Same on ngwr: [hidden]="notAProperty" in alert.html builds with a warm cache.
Exception or Error
Your Environment
Anything else relevant?
library-compilation.ts only type-checks files in affectedFiles from the restored builder program, and TS doesn't know about .html, so nothing is checked.
aot-compilation.ts handles this with usingBuildInfo / includeTTC in findAffectedFiles;
porting that locally fixed it (warm + broken fails, warm + valid still passes and re-emits).