mirror of
https://github.com/angular/angular
synced 2026-05-24 09:28:37 +00:00
In ViewEngine, SelfSkip would navigate up the tree to get tokens from the parent node, skipping the child. This restores that functionality in Ivy. In ViewEngine, if a special token (e.g. ElementRef) was not found in the NodeInjector tree, the ModuleInjector was also used to lookup that token. While special tokens like ElementRef make sense only in a context of a NodeInjector, we preserved ViewEngine logic for now to avoid breaking changes. We identified 4 scenarios related to @SkipSelf and special tokens where ViewEngine behavior was incorrect and is likely due to bugs. In Ivy this is implemented to provide a more intuitive API. The list of scenarios can be found below. 1. When Injector is used in combination with @Host and @SkipSelf on the first Component within a module and the injector is defined in the module, ViewEngine will get the injector from the module. In Ivy, it does not do this and throws instead. 2. When retrieving a @ViewContainerRef while @SkipSelf and @Host are present, in ViewEngine, it throws an exception. In Ivy it returns the host ViewContainerRef. 3. When retrieving a @ViewContainerRef on an embedded view and @SkipSelf is present, in ViewEngine, the ref is null. In Ivy it returns the parent ViewContainerRef. 4. When utilizing viewProviders and providers, a child component that is nested within a parent component that has @SkipSelf on a viewProvider value, if that provider is provided by the parent component's viewProviders and providers, ViewEngine will return that parent's viewProviders value, which violates how viewProviders' visibility should work. In Ivy, it retrieves the value from providers, as it should. These discrepancies all behave as they should in Ivy and are likely bugs in ViewEngine. PR Close #39464 |
||
|---|---|---|
| .. | ||
| change_detection | ||
| compiler | ||
| debug | ||
| di | ||
| i18n | ||
| interface | ||
| linker | ||
| metadata | ||
| reflection | ||
| render | ||
| render3 | ||
| sanitization | ||
| testability | ||
| util | ||
| view | ||
| zone | ||
| application_init.ts | ||
| application_module.ts | ||
| application_ref.ts | ||
| application_tokens.ts | ||
| change_detection.ts | ||
| codegen_private_exports.ts | ||
| console.ts | ||
| core.externs.js | ||
| core.ts | ||
| core_private_export.ts | ||
| core_render3_private_export.ts | ||
| di.ts | ||
| error_handler.ts | ||
| errors.ts | ||
| event_emitter.ts | ||
| ivy_switch.ts | ||
| linker.ts | ||
| metadata.ts | ||
| platform_core_providers.ts | ||
| r3_symbols.ts | ||
| render.ts | ||
| version.ts | ||
| zone.ts | ||