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
) {}
}
