簡體   English   中英

如何在 Angular 中注入具有構造函數參數的 object?

[英]How to inject object that has constructor parameters in Angular?

我非常喜歡 Angular,我想弄清楚如何將參數傳遞給正在注入組件的 object 構造函數。

這是一個例子:

圖像捕獲.service.ts

@Injectable({ providedIn: 'root'})
export class ImageCapture {

  constructor(
    private sdk: any,
    private videoSource: HTMLVideoElement,
    private cameraFeedback: HTMLCanvasElement) {}
}

圖像掃描儀.component.ts

@Component({
  selector: 'app-document-scanner-component',
  templateUrl: './app-document-scanner-component.html',
  styleUrls: ['./app-document-scanner-component.scss'],
})
export class ImageScannerComponent {

  @ViewChild('video') video!: ElementRef<HTMLVideoElement>;
  @ViewChild('cameraFeedback') feedback!: ElementRef<HTMLCanvasElement>;

  constructor(private imageCaptureService: ImageCapture) { }

}

image-scanner. component image-scanner. component我需要傳遞給注入的 object ImageCapture幾個構造函數參數一個是正在導入的 SDK 實例,第二個參數是 HTML DOM 元素,我正在使用@ViewChild裝飾器。

我怎樣才能做到這一點?

您不能將參數傳遞給服務的構造函數,因為您的服務是在加載應用程序時創建的。 因此,當您在組件中使用服務時,該服務已經實例化。

一種解決方案是在您的服務中創建一個 function:

public initialize(sdk: any,videoSource: HTMLVideoElement,cameraFeedback: HTMLCanvasElement) {}

那么你只需要在你的組件的構造函數中調用這個 function。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM