当前位置: 首页 > 知识库问答 >
问题:

“this.appInits[i]”不是函数

空夕
2023-03-14

我正在尝试使用APP_初始值设定项从配置文件加载数据。我发现以下错误:

“未处理的promise拒绝:this.appInits[i]不是函数;区域:;任务:Promise.then;值:TypeError:this.appInits[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();
}

我做错了什么有什么帮助吗?

编辑:

亚当的解决方案修正了最初的错误。但现在我看到了一个新的错误:

TypeError:无法设置未定义的属性“urlList”

据我所知,没有创建ApiConfig的实例。但我在Angular中加载配置文件时看到的所有示例都给出了相同的示例。我想知道如何强制创建ApiConfig类。我怎样才能成为单身汉?下面是ApiConfig的用法。

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

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

}

答:上面代码中创建promise的方式似乎存在问题。我修改了loadconfig()方法,如链接中所示:https://gist.github.com/fernandohu/122e88c3bcd210bbe41c608c36306db9这解决了我的问题。

共有1个答案

秦安宁
2023-03-14

我想这是因为你需要在导出函数语句中返回函数:

export function apiConfigProvider(config: ApiConfig) {
   return () => config.loadConfig();
}
 类似资料:
  • 问题内容: 我在尝试简化导入时遇到webpack TypeError。以下代码可以正常工作。在这里,我导入了一个从调用的React高阶组件(HOC)。 core / components / form / index.js (对进行命名输出) login-form.jsx (导入和使用) 但是,我想将导入简化为just 。所以,我再出口的和进口它。请参见下面的代码: core / index.js

  • 2. C标准I/O库函数与Unbuffered I/O函数 现在看看C标准I/O库函数是如何用系统调用实现的。 fopen(3) 调用open(2)打开指定的文件,返回一个文件描述符(就是一个int类型的编号),分配一个FILE结构体,其中包含该文件的描述符、I/O缓冲区和当前读写位置等信息,返回这个FILE结构体的地址。 fgetc(3) 通过传入的FILE *参数找到该文件的描述符、I/O缓冲

  • 问题内容: 当我试图在React版本15.2.0中使用这两个函数时,我在代码中发现了一个问题,尽管如此,我找到了一种解决方法,但是我想知道是否有更好的解决方案。 因此,每当我尝试运行index.html文件时,都不会显示任何内容,但是控制台会出现第一个错误: React.render不是function 。我发现发生这种情况是因为新版本的React需要使用react-dom,即 现在问题已解决,但

  • 我碰巧知道,在下面的表达式中,使用将导致无限流,将始终为0。我之所以困惑是因为我认为返回的值没有被使用,即便如此,它也不应该中断之后的增量。

  • 问题内容: 也许对编译器进行优化后并不重要,但是在C / C ++中,我看到大多数人以以下形式进行for循环: 使用postfix 完成增量操作。我得到了两种形式之间的区别。i 返回i的当前值,但是在安静时将1加到i。++ i首先将1加到i,然后返回新值(比i大1)。 我认为i 需要做更多的工作,因为除了下一个值外,还需要存储一个前一个值:推 (&i)进行堆栈(或加载至寄存器);递增(&i)。与

  • 问题内容: 我正在为无法解决的错误而烦恼。我有以下内容; JSON格式 和下面的jQuery 但是我收到一个错误,认为map.data未定义为函数?看着它,我不知道什么是行不通的,因为我已将其从以前使用的代码复制到新项目中。唯一不同的是JSON源。上一个没有[]括号之前的部分。这是什么让我失望吗? 问题答案: 对象,在JavaScript没有方法,它只是为数组,。 因此,为了使您的代码正常工作,请