angular/packages/core/test
Kristiyan Kostadinov 9c55fcb3e6 feat(core): de-duplicate host directives
With host directives we can end up in a situation where the same directive applies multiple times to the same element, potentially with conflicting configurations. The runtime isn't set up for a directive to apply more than once so historically we were throwing an error when we detect duplicates.

This ended up limiting the usefulness of host directives to library authors, because it meant that host directives couldn't be reused as much as authors wanted. To address the issue, these changes introduce logic in the compiler and runtime that will de-duplicate host directives with the following logic:

1. If a directive matches once in the template and more than once as a host directive, the host directive matches will be discarded and only the template match will apply. The mental model is that a host directive match represents `Partial<YourDirective>` while a template match represents the full `YourDirective`.
2. If a directive matches multiple times as a host directive, we merge the input/output mappings from all the instances into a single one. If we detect a case where an input/output is exposed under multiple names during the merging process, both the compiler and the runtime will produce an error.

Fixes #57846.
2026-04-03 09:44:39 -07:00
..
acceptance feat(core): de-duplicate host directives 2026-04-03 09:44:39 -07:00
animation refactor(core): Update determineLongestAnimation to account for playback rate 2026-03-12 17:36:50 -06:00
animation_utils refactor(core): dispatch enter and leave animations at the right times (#63450) 2025-09-10 22:24:00 +00:00
authoring feat(core): make SimpleChanges generic (#64535) 2025-10-20 17:49:39 +00:00
bundling refactor(core): remove ComponentFactoryResolver & ComponentFactory from the api surface 2026-04-02 16:00:57 -07:00
change_detection build: update Jasmine to 6.0.0 2026-02-09 12:15:57 -08:00
compiler refactor(compiler): remove zone-based testing utilities 2026-02-09 07:55:12 -08:00
debug feat(core): Set default Component changeDetection strategy to OnPush 2026-03-24 16:25:02 -07:00
di docs: add new debugging and troubleshooting di guide 2026-02-20 10:01:11 -08:00
dom build: migrate all ts_library in packages/core/test (#61472) 2025-05-20 10:00:43 +00:00
hydration fix(core): catch hydration marker with implicit body tag (#60429) 2025-03-19 15:51:36 +01:00
i18n refactor: update license text to point to angular.dev (#57901) 2024-09-24 15:33:00 +02:00
legacy_animation feat(core): Set default Component changeDetection strategy to OnPush 2026-03-24 16:25:02 -07:00
linker refactor(core): remove ComponentFactoryResolver & ComponentFactory from the api surface 2026-04-02 16:00:57 -07:00
metadata refactor(core): improve resource loading with async/await 2025-11-11 12:50:16 -08:00
reflection refactor: update license text to point to angular.dev (#57901) 2024-09-24 15:33:00 +02:00
render3 refactor(core): remove ComponentFactoryResolver & ComponentFactory from the api surface 2026-04-02 16:00:57 -07:00
resource feat(core): allow debouncing signals 2026-03-09 13:21:52 -07:00
sanitization fix(core): prevent binding unsafe attributes on SVG animation elements (#67797) 2026-04-01 11:43:58 +02:00
signals fix(core): run linked signal equality check without reactive consumer 2026-03-17 13:59:38 -06:00
strict_types build: rename defaults2.bzl to defaults.bzl (#63383) 2025-08-25 15:45:01 -07:00
testability refactor(core): convert scripts within packages/core/test to relative imports (#60227) 2025-03-25 10:58:00 -07:00
util build: update Jasmine to 6.0.0 2026-02-09 12:15:57 -08:00
zone ci: reformat files 2025-12-16 14:44:19 -08:00
application_config_spec.ts refactor(core): convert scripts within packages/core/test to relative imports (#60227) 2025-03-25 10:58:00 -07:00
application_init_spec.ts test(core): refactors test to use timeout utility 2026-04-01 20:46:00 +02:00
application_module_spec.ts refactor(core): convert scripts within packages/core/test to relative imports (#60227) 2025-03-25 10:58:00 -07:00
application_ref_integration_spec.ts feat(core): Set default Component changeDetection strategy to OnPush 2026-03-24 16:25:02 -07:00
application_ref_spec.ts refactor(core): remove ComponentFactoryResolver & ComponentFactory from the api surface 2026-04-02 16:00:57 -07:00
BUILD.bazel build: rename defaults2.bzl to defaults.bzl (#63383) 2025-08-25 15:45:01 -07:00
change_detection_scheduler_spec.ts feat(core): Set default Component changeDetection strategy to OnPush 2026-03-24 16:25:02 -07:00
component_fixture_spec.ts feat(core): Set default Component changeDetection strategy to OnPush 2026-03-24 16:25:02 -07:00
defer_fixture_spec.ts ci: reformat files 2025-12-16 14:44:19 -08:00
dev_mode_spec.ts refactor(core): convert scripts within packages/core/test to relative imports (#60227) 2025-03-25 10:58:00 -07:00
directive_lifecycle_integration_spec.ts feat(core): Set default Component changeDetection strategy to OnPush 2026-03-24 16:25:02 -07:00
error_handler_spec.ts test(core): refactors test to use timeout utility 2026-04-01 20:46:00 +02:00
event_emitter_spec.ts refactor(core): Update tests for zoneless by default (#63668) 2025-09-09 14:41:56 -07:00
fake_async_spec.ts refactor(core): convert scripts within packages/core/test to relative imports (#60227) 2025-03-25 10:58:00 -07:00
forward_ref_integration_spec.ts ci: reformat files 2025-12-16 14:44:19 -08:00
runtime_error_spec.ts refactor(core): update error message links to versioned docs (#66374) 2026-01-09 22:33:51 +00:00
test_bed_effect_spec.ts feat(core): Set default Component changeDetection strategy to OnPush 2026-03-24 16:25:02 -07:00
test_bed_spec.ts feat(core): Set default Component changeDetection strategy to OnPush 2026-03-24 16:25:02 -07:00
transfer_state_spec.ts fix(core): Fix flakey test due to document injection 2026-02-09 14:16:24 -08:00