feat(ivy): add a runtime feature to copy cmp/dir definitions (#33362)

This commit adds CopyDefinitionFeature, which supports the case where an
entire decorator (@Component or @Directive) is inherited from parent to
child.

The existing inheritance feature, InheritDefinitionFeature, supports merging
of parent and child definitions when both were originally present. This
merges things like inputs, outputs, host bindings, etc.

CopyDefinitionFeature, on the other hand, compensates for a definition that
was missing entirely on the child class, by copying fields that aren't
ordinarily inherited (like the template function itself).

This feature is intended to only be used as part of ngcc code generation.

PR Close #33362
This commit is contained in:
Alex Rickabaugh
2019-10-23 11:56:30 -07:00
committed by Andrew Kushnir
parent 6b267482d7
commit 818c514968
8 changed files with 189 additions and 1 deletions

View File

@ -284,6 +284,9 @@ export class Identifiers {
static InheritDefinitionFeature:
o.ExternalReference = {name: 'ɵɵInheritDefinitionFeature', moduleName: CORE};
static CopyDefinitionFeature:
o.ExternalReference = {name: 'ɵɵCopyDefinitionFeature', moduleName: CORE};
static ProvidersFeature: o.ExternalReference = {name: 'ɵɵProvidersFeature', moduleName: CORE};
static listener: o.ExternalReference = {name: 'ɵɵlistener', moduleName: CORE};