Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fix(ivy): support abstract directives in template type checking #33131

Closed
wants to merge 1 commit into from

Commits on Oct 24, 2019

  1. fix(ivy): support abstract directives in template type checking

    Recently it was made possible to have a directive without selector,
    which are referred to as abstract directives. Such directives should not
    be registered in an NgModule, but can still contain decorators for
    inputs, outputs, queries, etc. The information from these decorators and
    the `@Directive()` decorator itself needs to be registered with the
    central `MetadataRegistry` so that other areas of the compiler can
    request information about a given directive, an example of which is the
    template type checker that needs to know about the inputs and outputs of
    directives.
    
    Prior to this change, however, abstract directives would only register
    themselves with the `MetadataRegistry` as being an abstract directive,
    without all of its other metadata like inputs and outputs. This meant
    that the template type checker was unable to resolve the inputs and
    outputs of these abstract directives, therefore failing to check them
    correctly. The typical error would be that some property does not exist
    on a DOM element, whereas said property should have been bound to the
    abstract directive's input.
    
    This commit fixes the problem by always registering the metadata of a
    directive or component with the `MetadataRegistry`. Tests have been
    added to ensure abstract directives are handled correctly in the
    template type checker, together with tests to verify the form of
    abstract directives in declaration files.
    
    Fixes angular#30080
    JoostK authored and alxhub committed Oct 24, 2019
    Copy the full SHA
    3d1960c View commit details
    Browse the repository at this point in the history