typescript - Bare typer-importer bryter Angulars avhengighetsinjeksjon


Angular DI-systemet respekterer ikke TypeScript 3.8 type-only imports.

import type { ChangeDetectorRef } from '@angular/core';

...

@Component({
    templateUrl: './popup.component.html',
    changeDetection: ChangeDetectionStrategy.OnPush
})
export class Component implements OnInit {
  constructor(
    private readonly changeDetectorRef: ChangeDetectorRef    // ERROR: Consider changing the type-only import to a regular import, or use the @Inject decorator to specify an injection token
  ) {}
}

Finnes det noen mulighet for å bruke kun type-importer i Angular?

Svar #1

Eslint-fikseverktøyet blir litt forvirret på denne...

På ChangeDetectorRef må du bruke @Inject(), og det vil ikke være en type. Men for en ekte type (som ikke er importert i konstruktøren) kan du bruke syntaksen, ingen problem.

import { ChangeDetectorRef } from '@angular/core';
import type { OnDestroy } from '@angular/core';


@Component({
   templateUrl: './popup.component.html',
   changeDetection: ChangeDetectionStrategy.OnPush
})
export class Component implements OnDestroy {
 constructor(
   @Inject(ChangeDetectorRef) private changeDetectorRef: ChangeDetectorRef    
 ) {}
}

Relaterte artikler