angular/packages/compiler-cli/ngcc/src
Kristiyan Kostadinov 54ceed53e2 refactor(compiler): add support for host directives (#46868)
This is the compile-time implementation of the `hostDirectives` feature plus a little bit of runtime code to illustrate how the newly-generated code will plug into the runtime. It works by creating a call to the new `ɵɵHostDirectivesFeature` feature whenever a directive has a `hostDirectives` field. Afterwards `ɵɵHostDirectivesFeature` will patch a new function onto the directive definition that will be invoked during directive matching.

For example, if we take the following definition:

```ts
@Directive({
  hostDirectives: [HostA, {directive: HostB, inputs: ['input: alias']}]
})
class MyDir {}
```

Will compile to:

```js
MyDir.ɵdir = ɵɵdefineComponent({
  features: [ɵɵHostDirectivesFeature([HostA, {
    directive: HostB,
    inputs: {
      input: "alias"
    }
  }])]
});
```

The template type checking is implemented during directive matching by adding the host directives applied on the host to the array of matched directives whenever the host is matched in a template.

Relates to #8785.

PR Close #46868
2022-08-22 16:00:35 -07:00
..
analysis refactor(compiler): add support for host directives (#46868) 2022-08-22 16:00:35 -07:00
dependencies fix(ngcc): cope with packages following APF v14+ (#45833) 2022-05-06 09:51:14 -07:00
entry_point_finder refactor: add override keyword to members implementing abstract declarations (#42512) 2021-07-12 13:11:17 -07:00
execution refactor(ngcc): move loadPackageJson() and related types to utils.ts (#45833) 2022-05-06 09:51:14 -07:00
host feat(core): support TypeScript 4.8 (#47038) 2022-08-16 16:02:47 +00:00
locking docs: fix spelling (#46713) 2022-07-08 20:54:52 +00:00
migrations refactor(compiler): remove usages of deprecated AST creation functions (#45134) 2022-02-22 10:22:47 -08:00
packages docs: fix spelling (#46713) 2022-07-08 20:54:52 +00:00
rendering docs: fix spelling (#46713) 2022-07-08 20:54:52 +00:00
writing fix(ngcc): cope with packages following APF v14+ (#45833) 2022-05-06 09:51:14 -07:00
command_line_options.ts refactor: update yargs to new API for ESM compatibility (#43431) 2021-10-01 18:28:45 +00:00
constants.ts build: update license headers to reference Google LLC (#37205) 2020-05-26 14:26:58 -04:00
main.ts refactor(ngcc): support processing only the typings files of packages (#40976) 2021-02-24 14:23:14 -08:00
ngcc_options.ts refactor(ngcc): support processing only the typings files of packages (#40976) 2021-02-24 14:23:14 -08:00
path_mappings.ts refactor(compiler-cli): update to use new file-system interfaces (#40281) 2021-01-08 09:34:44 -08:00
utils.ts fix(ngcc): cope with packages following APF v14+ (#45833) 2022-05-06 09:51:14 -07:00