mirror of
https://github.com/angular/angular
synced 2026-05-24 09:28:37 +00:00
This change moves information from instructions to declarative position: - `ɵɵallocHostVars(vars)` => `DirectiveDef.hostVars` - `ɵɵelementHostAttrs(attrs)` => `DirectiveDef.hostAttrs` When merging directives it is necessary to know about `hostVars` and `hostAttrs`. Before this change the information was stored in the `hostBindings` function. This was problematic, because in order to get to the information the `hostBindings` would have to be executed. In order for `hostBindings` to be executed the directives would have to be instantiated. This means that the directive instantiation would happen before we had knowledge about the `hostAttrs` and as a result the directive could observe in the constructor that not all of the `hostAttrs` have been applied. This further complicates the runtime as we have to apply `hostAttrs` in parts over many invocations. `ɵɵallocHostVars` was unnecessarily complicated because it would have to update the `LView` (and Blueprint) while existing directives are already executing. By moving it out of `hostBindings` function we can access it statically and we can create correct `LView` (and Blueprint) in a single pass. This change only changes how the instructions are generated, but does not change the runtime much. (We cheat by emulating the old behavior by calling `ɵɵallocHostVars` and `ɵɵelementHostAttrs`) Subsequent change will refactor the runtime to take advantage of the static information. PR Close #34683 |
||
|---|---|---|
| .. | ||
| brotli-cli | ||
| browsers | ||
| build | ||
| circular_dependency_test | ||
| components-repo-ci | ||
| gulp-tasks | ||
| ng_rollup_bundle | ||
| ngcontainer | ||
| npm | ||
| public_api_guard | ||
| rxjs | ||
| size-tracking | ||
| source-map-test | ||
| symbol-extractor | ||
| testing | ||
| ts-api-guardian | ||
| tslint | ||
| validate-commit-message | ||
| yarn | ||
| bazel_stamp_vars.js | ||
| BUILD.bazel | ||
| check-environment.js | ||
| defaults.bzl | ||
| jasmine-seed-generator.js | ||
| jsconfig.json | ||
| ng_benchmark.bzl | ||
| postinstall-patches.js | ||
| rebase-pr.js | ||
| tsconfig-test.json | ||
| tsconfig.json | ||
| types.d.ts | ||
| utils.inc | ||
| verify-codeownership.js | ||