Hacktoberfest 2026: die Issues, die Maintainer für den Oktober markiert haben – offen und einsteigerfreundlich. Hacktoberfest-Issues durchsuchen

Constructor param typed `ns.Foo` (namespace-qualified) compiles to ɵɵinvalidFactoryDep

Offen
#633 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Maintainer antworten meist innerhalb von 1 Tag

@edbzn arbeitet bereits daran.

Seit 25.10.2026.

  • #634 von @edbzn — offen

Bewertung

Schwierigkeit
3/5
Geschätzter Aufwand
1-2 Tage
Anfängerfreundlichkeit
25/100
Issue-Typ
Bug
Klarheit
Größtenteils klar
Aktivitätsstatus
Veraltet
Tech-Stack
angular, rust, typescript
Bereich
backend, compilers

Rechercherichtung

Start with the ngtsc spec cases named in the issue and trace how extract_param_token handles constructor parameter types, comparing TSQualifiedName handling with the resolution used by setClassMetadata. The expected result is generated ɵɵinject calls for namespace-qualified types; verify both namespace and named imports against the reported cases. Pull request #634 is already open for this issue.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

Summary

A constructor parameter typed with a qualified name on an import (ns.Zero, ns.one.One) compiles to ɵɵinvalidFactoryDep, so instantiating the class throws at runtime. ngc treats the qualified name as a value reference, the same as a plain imported name. Applies to @Injectable, @Component, @Directive, @Pipe and @NgModule factories.

Found by running Angular's ngtsc spec ngtsc_spec.ts: "should generate correct imports for type references to namespaced symbols using a namespace import" (and "... using named imports") against oxc.

Reproduction

import {Injectable} from '@angular/core';
import * as ns from './ns'; // export class Zero {}; export namespace one { export class One {} }

@Injectable()
export class MyService {
  constructor(zero: ns.Zero, one: ns.one.One) {}
}
Actual
return new (__ngFactoryType__ || MyService)(i0.ɵɵinvalidFactoryDep(0), i0.ɵɵinvalidFactoryDep(1));
Expected (ngc)
import * as i1 from "./ns";
return new (__ngFactoryType__ || MyService)(i0.ɵɵinject(i1.Zero), i0.ɵɵinject(i1.one.One));

With a named import (import {ns} from './ns'), ngc emits i0.ɵɵinject(i1.ns.Zero).

Cause

The DI token extraction (extract_param_token) returns no token for a TSQualifiedName, while setClassMetadata already resolves the same type ({type: i1.one.One}).

Vorherrschende Sprache
Rust
Sterne
244
Forks
26
Ø Merge
1 T. 16 Min.
Gemergte PRs (30 T.)
87

Entwicklungsumgebung

Dieses Projekt bietet weder Dev-Container noch Dockerfile noch Beitragsleitfaden – die Einrichtung liegt bei Ihnen. Beginnen Sie mit der README; die allgemeinen Schritte stehen in unserem Leitfaden für den ersten Beitrag.

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus voidzero-dev/oxc-angular-compiler

Alle Issues in voidzero-dev/oxc-angular-compiler

Ähnliche Issues

Weitere Issues zu Rust

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.