【问题标题】:cannot loop and assign api values in constructor无法在构造函数中循环和分配 api 值
【发布时间】:2021-03-20 01:27:03
【问题描述】:

我的导出类型如下:

export type Program{
key: string; value: string;
}

我有从 api 返回的数组值如下:

apival = ["abc", "xyz" ...etc]

在我的组件中,我在构造函数中这样做

program: Program[];

constructor(private service: Service){
getval = service.apival;
getval.forEach((a) => {
program.push({
key: a, 
value: ""
})})}

现在我想将返回的数组值指定为程序类型的键。我正在使用 forEach 循环执行此操作。但是,我收到以下错误:

"Cannot read property 'push' of undefined" 

注意:我尝试在服务本身中执行此操作,但出现此错误:“无法实例化循环依赖”

任何想法,为什么会发生这种情况以及将 getval 分配给程序 [] 的最佳方法是什么。在服务或组件中。

我不想在 OnInit() 上这样做

【问题讨论】:

标签: angular typescript


【解决方案1】:

您的program: Program[]; 需要像这样program: Array<Program> = new Array<Program>() 进行初始化。您也可以使用map 并获得一个新数组。

this.program = getval.map(a=>{return {key:a, value:""}});

【讨论】:

    【解决方案2】:
    program: Program[] = [];
    

    由于program 是一个类变量,您需要将它与this 关键字(this.program)一起使用。

    使用 ES6 的一种解决方案是:

    this.program = this.service.getval.map(a => {key: a, value: ""});
    

    map 将遍历给定数组并返回一个新数组。

    【讨论】:

      猜你喜欢
      • 2016-08-22
      • 2021-12-16
      • 2016-08-04
      • 1970-01-01
      • 2018-08-05
      • 2018-08-17
      • 1970-01-01
      • 2021-11-24
      • 1970-01-01
      相关资源
      最近更新 更多