클래스 (?)에 대한 모든 매개 변수를 확인할 수 없습니다.

Aug 20 2020

저는 현재 angular 9에서 동적 메뉴를 만들려고합니다. 저는 angular에 익숙하지 않아 어떤 이유로 다음과 같은 오류 메시지가 나타납니다. "ERROR in C : / mypath / head-의 HeadMenuComponent에 대한 모든 매개 변수를 해결할 수 없습니다. menu.component.ts : (?,?,?). " 코드는 매우 간단합니다.

import { Component, OnInit, Inject, Injectable } from '@angular/core';

  @Component({
    selector: 'app-head-menu',
    templateUrl: './head-menu.component.html',
    styleUrls: ['./head-menu.component.css']
  })

  export class HeadMenuComponent implements OnInit {
    imageURL: string;
    text: string;
    menuFunction: () => void;

  constructor(@Inject(String)imageURL: string, @Inject(String)text: string, 
              @Inject(Function)functionToAccept: () => void) {
    this.imageURL = imageURL;
    this.text = text;
    this.menuFunction = functionToAccept;
   }


  ngOnInit(): void {
  }

}

코드가 컴파일 중이고 ng serve가 작동하지만 여전히 오류 메시지가 나타납니다. 이 오류로 인해 angular-cli 명령 : ng xi18n이 실행되지 않기 때문에 이것은 나에게 특히 중요합니다.

그래서 내 질문은 "내가 뭘 잘못하고 있니?" 객체를 생성자로 전달하는 다른 방법이 있습니까? 생성자에게 문자열을 전달하기 위해 각도 주입을 사용하는 것이 나에게 잘못되었다고 생각하지만 아직 다른 방법을 찾지 못했습니다.

답변

1 Ric Aug 20 2020 at 18:19

이를 수행하는 한 가지 방법은 다음을 수행하는 것입니다.

export const IMAGE_URL = new InjectionToken<string>('imageUrl');

그런 다음 app.module(또는 다른 곳에서) :

{
  provide: IMAGE_URL ,
  useValue: 'www.someurl.com'
}

또는

{
  provide: IMAGE_URL,
  deps: [ConfigService],   //dependencies
  useFactory: (c: ConfigService) => {
      return c.someUrlValue();
  }
}

그리고 다음을 소비하십시오.

constructor(@Inject(IMAGE_URL) imageUrl: string) {

}