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

Aperta
#704 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
3/5
Tempo stimato
1-2 giorni
Idoneità per principianti
56/100
Tipo di issue
Bug
Chiarezza
Abbastanza chiara
Stato di attività
Attiva
Stack tecnologico
angular, rust
Ambito
compilers

Direzione di ricerca

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.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

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.

Lingua principale
Rust
Stelle
245
Fork
26
Merge medio
1g 23m
PR unite (30g)
83

Preparare l'ambiente

Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di voidzero-dev/oxc-angular-compiler

Tutte le issue di voidzero-dev/oxc-angular-compiler

Issue simili

Altre issue su Rust

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.