angular/packages
Andrew Kushnir effb92dfae fix(ivy): skip field inheritance if InheritDefinitionFeature is present on parent def (#34244)
The main logic of the `InheritDefinitionFeature` is to go through the prototype chain of a given Component and merge all Angular-specific information onto that Component def. The problem happens in case there is a Component in a hierarchy that also contains the `InheritDefinitionFeature` (i.e. it extends some other Component), so it inherits all Angular-specific information from its super class. As a result, the root Component may end up having duplicate information inherited from different Components in hierarchy.

Let's consider the following structure: `GrandChild` extends `Child` that extends `Base` and the `Base` class has a `HostListener`. In this scenario `GrandChild` and `Child` will have `InheritDefinitionFeature` included into the `features` list. The processing will happend in the following order:

- `Child` inherits `HostListener` from the `Base` class
- `GrandChild` inherits `HostListener` from the `Child` class
- since `Child` has a parent, `GrandChild` also inherits from the `Base` class

The result is that the `GrandChild` def has duplicated host listener, which is not correct.

This commit introduces additional logic that checks whether we came across a def that has `InheritDefinitionFeature` feature (which means that this def already inherited information from its super classes). If that's the case, we skip further fields-related inheritance logic, but keep going though the prototype chain to look for super classes that contain other features (like NgOnChanges), that we need to invoke for a given Component def.

PR Close #34244
2020-01-07 10:28:06 -08:00
..
animations fix(animations): leaking detached nodes when parent has a leave transition (#34409) 2019-12-16 12:39:25 -08:00
bazel Revert "build: update @angular/bazel schematics to rules_nodejs 0.42.1" (#34360) 2019-12-11 15:58:46 -08:00
benchpress feat: update rxjs peerDependencies minimum requirment to 6.5.3 (#32812) 2019-10-01 14:56:45 -07:00
common fix(common): ngStyle should ignore undefined values (#34422) 2019-12-16 12:38:49 -08:00
compiler feat(compiler): record end of expression Token (#33549) 2020-01-06 11:00:15 -08:00
compiler-cli refactor(ivy): let strictTemplates imply fullTemplateTypeCheck (#34195) 2020-01-06 11:07:54 -08:00
core fix(ivy): skip field inheritance if InheritDefinitionFeature is present on parent def (#34244) 2020-01-07 10:28:06 -08:00
docs refactor(core): remove deprecated Renderer (#33019) 2019-10-08 09:23:00 -07:00
elements refactor(elements): ng-add schematics (#33723) 2019-11-22 17:36:47 -05:00
examples build: re-enable template type-checking for various targets across the repo (#34144) 2019-12-02 11:24:18 -08:00
forms feat(forms): expand NgModel disabled type to work with strict template type checking (#34438) 2019-12-16 15:34:03 -08:00
http ci: run acceptance tests on saucelabs with ivy (#34277) 2019-12-16 07:43:41 -08:00
language-service fix(language-service): correctly parse expressions in an attribute (#34517) 2020-01-06 11:37:21 -08:00
localize fix(ivy): i18n - remove translate function when clearing translations (#34346) 2019-12-11 13:19:22 -08:00
platform-browser refactor(platform-browser): avoid mutable exports. (#34207) 2019-12-05 10:19:12 -08:00
platform-browser-dynamic docs: add api doc to sub-packages (#33801) 2019-11-20 14:48:50 -08:00
platform-server refactor: TypeScript 3.7 fixes. (#34372) 2019-12-18 10:14:10 -08:00
platform-webworker docs: add api doc to sub-packages (#33801) 2019-11-20 14:48:50 -08:00
platform-webworker-dynamic build: set up all packages to publish via wombot proxy (#33747) 2019-11-13 11:34:33 -08:00
private/testing build: migrate determining if Ivy is enabled in typescript genrule files to use angular_ivy_enabled (#33983) 2019-11-26 16:38:40 -05:00
router ci: run acceptance tests on saucelabs with ivy (#34277) 2019-12-16 07:43:41 -08:00
service-worker fix(service-worker): allow creating post api requests after cache failure (#33930) 2019-11-22 13:15:56 -05:00
upgrade docs(upgrade): add example links to downgradeComponent() function docs (#34406) 2019-12-16 07:45:00 -08:00
zone.js ci: run acceptance tests on saucelabs with ivy (#34277) 2019-12-16 07:43:41 -08:00
BUILD.bazel build: reference zone.js from source directly instead of npm. (#33046) 2019-11-06 00:48:34 +00:00
empty.ts
goog.d.ts fix(ivy): use goog.LOCALE for Closure Compiler to define default LOCALE_ID (#31519) 2019-07-16 13:02:10 -04:00
license-banner.txt build: bump year (#27880) 2019-01-11 11:15:59 -08:00
README.md docs: add doc reference to npm package readme (#33911) 2019-11-20 14:46:23 -08:00
system.d.ts
tsconfig-build-no-strict.json refactor(core): ensure compatibility with typescript strict flag (#30993) 2019-07-18 14:21:25 -07:00
tsconfig-build.json refactor(core): ensure compatibility with typescript strict flag (#30993) 2019-07-18 14:21:25 -07:00
tsconfig-test.json refactor: fix typescript strict flag failures in all tests (#30993) 2019-07-18 14:21:26 -07:00
tsconfig.json build: consolidate @angular-devkit/build-angular to the root package.json (#34002) 2019-12-02 10:49:12 -08:00
types.d.ts build: reference zone.js from source directly instead of npm. (#33046) 2019-11-06 00:48:34 +00:00

Angular

The sources for this package are in the main Angular repo. Please file issues and pull requests against that repo.

Usage information and reference details can be found in Angular documentation.

License: MIT