d43c30688a
In rare cases a project with configured `rootDirs` that has imports to non-existent identifiers could fail in the migration. This happens because based on the application code, the migration could end up trying to resolve the `ts.Symbol` of such non-existent identifiers. This isn't a problem usually, but due to a upstream bug in the TypeScript compiler, a runtime error is thrown. This is because TypeScript is unable to compute a relative path from the originating source file to the imported source file which _should_ provide the non-existent identifier. An issue for this has been reported upstream: https://github.com/microsoft/TypeScript/issues/37731. The issue only surfaces since our migrations don't provide an absolute base path that is used for resolving the root directories. To fix this, we ensure that we never use relative paths when parsing tsconfig files. More details can be found in the TS issue. Fixes #36346. PR Close #36367 |
||
---|---|---|
.. | ||
angular | ||
BUILD.bazel | ||
README.md | ||
analyze_template.ts | ||
index.ts |
README.md
Assignments to template variables
With Ivy, assignments to template variables are no longer supported as template variables are effectively constants.
This means that assignments to template variables will break your application once Ivy is enabled by default. For example:
<button *ngFor="let option of options"
(click)="option = 'newButtonText'">
{{ option }}
</button>
In the example from above, a value is assigned to the option
template variable on click
. This will ultimately break your
application and therefore the logic needs to be adjusted to not
update the option
variable, but rather the given element in
the options
array:
<button *ngFor="let option of options; let idx = index"
(click)="options[idx] = 'newButtonText'">
{{ option }}
</button>