host bindings: empty `[]` / `()` keys accepted, and `aria-*` host bindings stay DOM properties

Aberta
#704 0 comentários 0 reações 0 responsáveis Ver no GitHub

Mantenedores costumam responder em até 1 dia

Ninguém assumiu esta issue ainda.

Avaliação

Dificuldade
3/5
Tempo estimado
1-2 dias
Facilidade para iniciantes
56/100
Tipo de issue
Bug
Clareza
Razoavelmente clara
Status de atividade
Ativa
Stack de tecnologia
angular, rust
Domínio
compilers

Direção de pesquisa

Start by reading binding_specialization.rs, especially is_aria_attribute and specialize_bindings_for_host, then trace where host binding keys are parsed and validated. Reproduce the empty [] and () cases and the host aria-* cases against the issue’s ngtsc examples. Done when empty keys produce missing-name errors and host aria-* bindings compile as attributes.

Escrita pelo modelo de indexação a partir do texto da issue.

Descrição

Found while reviewing #697. Checked against ngtsc 22.2.4.

1. Empty [] / () host keys are accepted

@Directive({ selector: '[d]', host: { '[]': 'a', '()': 'b()' } })
ngtsc   error NG5001: Property name is missing in binding / Event name is missing in binding
Oxc     no error; emits ɵɵlistener("", …) and ɵɵdomProperty("", ctx.a)

2. Host aria-* bindings stay DOM properties

@Directive({ selector: '[d]', host: { '[aria-label]': 'l' } })
export class D { l = 'a'; @HostBinding('aria-hidden') h = true; }
ngtsc   ɵɵattribute("aria-label", ctx.l)("aria-hidden", ctx.h)
Oxc     ɵɵdomProperty("aria-label", ctx.l)("aria-hidden", ctx.h)

binding_specialization.rs rewrites aria-* to an attribute only for templates (is_aria_attribute), not in specialize_bindings_for_host.

Linguagem predominante
Rust
Estrelas
245
Forks
26
Merge médio
1d 23min
PRs com merge (30d)
83

Preparar o ambiente

Este projeto não oferece contêiner de desenvolvimento, Dockerfile nem guia de contribuição, então a configuração fica por sua conta: comece pelo README e veja nosso guia da primeira contribuição para os passos gerais.

Primeiros passos

  1. Leia a issue inteira e depois o guia de contribuição do projeto.
  2. Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
  3. Faça um fork do repositório e trabalhe em uma branch.
  4. Abra um pull request que referencie o número da issue.

Mais de voidzero-dev/oxc-angular-compiler

Todas as issues de voidzero-dev/oxc-angular-compiler

Issues semelhantes

Mais issues de Rust

Receba novas issues na sua caixa de entrada

Um resumo curto de issues do GitHub para quem está começando.