@Injectable deps entries written as [new Optional(), new Self(), Dep] inject the array as the token
Mantenedores costumam responder em até 1 dia
Ninguém assumiu esta issue ainda.
Avaliação
- Dificuldade
- 4/5
- Tempo estimado
- 3-5 dias
- Facilidade para iniciantes
- 52/100
- Tipo de issue
- Bug
- Clareza
- Claramente especificada
- Status de atividade
- Ativa
- Stack de tecnologia
- rust, typescript
- Domínio
- compilers
Direção de pesquisa
Start with injectable/decorator.rs and trace how extract_dependency handles each deps entry; compare it with ngtsc’s getDep in compiler-cli/src/ngtsc/annotations/src/injectable.ts. Run the named ngtsc_spec.ts case, including the array-literal token scenario. Done means flagged array entries produce the token and injection flags expected by ngc across the listed forms.
Escrita pelo modelo de indexação a partir do texto da issue.
Descrição
Summary
In @Injectable({ useFactory | useClass, deps }), a dep written as flags plus a token ([new Optional(), new Self(), Dep]) compiles as one token: the whole array goes to ɵɵinject, so injection fails at runtime. ngc reads it as the token Dep with the Optional and Self flags.
Found by running Angular's ngtsc spec ngtsc_spec.ts: "should compile Injectables with providedIn and factory with deps with array literal tokens" against oxc.
Reproduction
import {Injectable, Optional, Self} from '@angular/core';
@Injectable()
export class Dep {}
@Injectable({
providedIn: 'root',
useFactory: (dep: Dep) => new Service(dep),
deps: [[new Optional(), new Self(), Dep]],
})
export class Service {
constructor(dep: Dep) {}
}
Actual
__ngConditionalFactory__ = ((dep) => new Service(dep))(i0.ɵɵinject([new Optional(), new Self(), Dep]));
Expected (ngc)
__ngConditionalFactory__ = ((dep) => new Service(dep))(i0.ɵɵinject(Dep, 10));
useClass + deps, the bare form ([Optional, SkipSelf, Dep]) and new Inject(TOKEN) hit the same problem.
Cause
extract_dependency (injectable/decorator.rs) turns each deps element straight into a token. It has no port of ngtsc's getDep (compiler-cli/src/ngtsc/annotations/src/injectable.ts), which splits an array entry into a token and Inject/Optional/Self/SkipSelf flags.
- Linguagem predominante
- Rust
- Estrelas
- 244
- Forks
- 26
- Merge médio
- 23h 41min
- PRs com merge (30d)
- 106
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
- Leia a issue inteira e depois o guia de contribuição do projeto.
- Comente na issue dizendo que vai assumir — evita que duas pessoas façam o mesmo trabalho.
- Faça um fork do repositório e trabalhe em uma branch.
- Abra um pull request que referencie o número da issue.
Mais de voidzero-dev/oxc-angular-compiler
-
Partial mode: NgModule-declared components get no dependencies, so their directives never matchAberta
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 35/100
voidzero-dev/oxc-angular-compiler#655 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 4/5 3-5 dias Facilidade para iniciantes 48/100
voidzero-dev/oxc-angular-compiler#654 ·
Mantenedores costumam responder em até 1 dia
-
Constructor param typed by a same-file interface is injected as a token (ReferenceError at runtime)Aberta
Dificuldade 3/5 1-2 dias Facilidade para iniciantes 73/100
voidzero-dev/oxc-angular-compiler#653 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 28/100
voidzero-dev/oxc-angular-compiler#623 · 2 comentários ·
Mantenedores costumam responder em até 1 dia
-
Support useDefineForClassFields: false (Class Field Lowering)Talvez já em andamento Um pull request vinculado a esta issue está aberto ou já foi mesclado. Aberta
Dificuldade 5/5 Mais de uma semana Facilidade para iniciantes 35/100
voidzero-dev/oxc-angular-compiler#73 · 11 comentários ·
Mantenedores costumam responder em até 1 dia
Todas as issues de voidzero-dev/oxc-angular-compiler
Issues semelhantes
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 76/100
Y-ASLant/ElegantClipboard#178 ·
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 82/100
linxiv-dev/linXiv#384 · 1 comentário ·
Mantenedores costumam responder em até 1 dia
-
bug drawings ui
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 82/100
userFRM/egui-charts#1595 ·
Mantenedores costumam responder em até 1 dia
-
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 72/100
smoltcp-rs/smoltcp#1235 ·
Mantenedores costumam responder em até 1 dia
-
scope:core type:security
Dificuldade 2/5 1-3 horas Facilidade para iniciantes 75/100
Mantenedores costumam responder em até 1 dia