programing

"이것.앱inits[i]는 함수가 아닙니다.

lovejava 2023. 8. 2. 08:37

"이것.앱inits[i]는 함수가 아닙니다.

APP_를 사용하려고 합니다.구성 파일에서 데이터를 로드하는 INITIALIZER.다음 오류가 발생합니다.

"처리되지 않은 약속 거부: this.appInit [i]는 함수가 아닙니다; Zone:; Task: Promise.값: TypeError: this.app그 자체[i]는 함수가 아닙니다."

코드:

import { Injectable } from '@angular/core';
import { Http } from '@angular/http';
import { Observable } from 'rxjs/Rx';

@Injectable()
export class ApiConfig {

  private urlList: any = null;

  constructor(private http: Http) {

  }

  public getUrl(key: any) {
    return this.urlList[key];
  }

  public loadConfig(){

    let retPromise: Promise<any> =  this.http.get('./assets/config/api-config.json')
      .map(res => res.json()).toPromise();

    retPromise.then(resp => this.urlList=resp.urlList);
    //this.urlList = retPromise.urlList;

    return retPromise;
  }

}


export  function apiConfigProvider(config: ApiConfig) {
   config.loadConfig();
}

제가 뭘 잘못하고 있는지에 대한 도움은 없나요?

편집:

아담의 해결책은 원래의 오류를 고쳤습니다.하지만 이제 새로운 오류가 보입니다.

유형 오류: 정의되지 않은 'urlList' 속성을 설정할 수 없습니다.

APIConfig 인스턴스가 생성되지 않은 것으로 알고 있습니다.그러나 Angular에서 구성 파일을 로드할 때 나타나는 모든 예는 동일한 예를 보여줍니다.APIConfig 클래스를 강제로 생성하는 방법이 궁금합니다.어떻게 하면 싱글톤으로 만들 수 있을까요?아래는 ApiConfig의 사용법입니다.

export BaseService { 
constructor (private config:ApiConfig){} 

public GetUrl (key: string) { 
   return config.urlList[key]; 
} 

}

답변: 위 코드에서 약속이 생성되는 방식에 문제가 있는 것 같습니다.https://gist.github.com/fernandohu/122e88c3bcd210bbe41c608c36306db9 링크에 나와 있는 대로 loadconfig 방법을 수정했습니다. 이것으로 문제가 해결되었습니다.

내보내기 함수 문에 있는 함수를 반환해야 하기 때문인 것 같습니다.

export function apiConfigProvider(config: ApiConfig) {
   return () => config.loadConfig();
}

언급URL : https://stackoverflow.com/questions/46076051/this-appinitsi-is-not-a-function