【问题标题】:How to create an object with a vector of objects inside如何创建一个内部包含对象向量的对象
【发布时间】:2018-06-28 17:50:10
【问题描述】:

我使用 Angular 4 创建我的网站。但是我需要创建一个内部带有对象向量的对象。这对我不起作用。我的代码:

对象 1 (disciplinaStatus.module.ts)

export class DisciplinaStatus{
 constructor(public codigo: string,
          public nome: string,
          public status: string,
          public professor:string,
          public cargaHoraria:string,
          public nota: number) {}
}

对象 2 (historicoData.module.ts)

import { DisciplinaStatus } from './disciplinaStatus.model';

export  class HistoricoData{
   constructor(public periodo: string,
          public historico: DisciplinaStatus[]) {} //The Problem stay here!!!
}

我的组件ts代码:

import { Component, OnInit } from '@angular/core';
import { DisciplinaStatus } from './models/disciplinaStatus.model';
import { HistoricoData } from './models/historicoData.model';

@Component({
     selector: 'historico-a-component',
     templateUrl: './historico-a.component.html',
     styleUrls: ['./historico-a.component.css']
})
export class HistoricoAComponent implements OnInit {

constructor(historico: HistoricoData[]) {

  historico = [
      new HistoricoData('2016/1', [
          new DisciplinaStatus('001','Redes 1','Completo','Everthon Valadão','60',71.5),
          new DisciplinaStatus('002','Compiladores','Completo','Walace','60',45.5)
      ]),
      new HistoricoData('2016/2', [
          new DisciplinaStatus('001','AED','Completo','Diego Melo','60',22.5),
          new DisciplinaStatus('002','Teoria','Completo','Diego Melo','60',89.5)
      ])
  ];
}

错误:

ng:///AppModule/AppComponent.ngfactory.js:7 ERROR 错误: StaticInjectorError(AppModule)[HistoricoAComponent -> Array]:
StaticInjectorError(Platform: core)[HistoricoAComponent -> Array]: NullInjectorError:数组没有提供者! 在 NullInjector.get (webpack-internal:///../../../core/esm5/core.js:1209) 在 resolveToken (webpack-internal:///../../../core/esm5/core.js:1507) 在 tryResolveToken (webpack-internal:///../../../core/esm5/core.js:1449) 在 StaticInjector.get (webpack-internal:///../../../core/esm5/core.js:1317) 在 resolveToken (webpack-internal:///../../../core/esm5/core.js:1507) 在 tryResolveToken (webpack-internal:///../../../core/esm5/core.js:1449) 在 StaticInjector.get (webpack-internal:///../../../core/esm5/core.js:1317) 在 resolveNgModuleDep (webpack-internal:///../../../core/esm5/core.js:11051) 在 NgModuleRef.get (webpack-internal:///../../../core/esm5/core.js:12284) 在 resolveDep (webpack-internal:///../../../core/esm5/core.js:12774)

【问题讨论】:

  • 看起来您正在使用构造函数来声明属性。只需在类中首先声明属性并将其从构造函数参数中删除,以便 Angular 不相信它应该注入 somrthing,因为您正在覆盖它。 this.history 的参考历史。
  • 感谢 JGoodgive。这工作正常。
  • 太棒了。将其添加为答案,以便您可以将其标记为已回答。

标签: angular typescript typescript2.0 typescript1.8 typescript1.5


【解决方案1】:

看起来您正在使用构造函数来声明属性。只需在类中首先声明属性并将其从构造函数参数中删除,这样 Angular 就不会相信它应该注入 somrthing,因为您正在覆盖它。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-22
    • 1970-01-01
    • 1970-01-01
    • 2022-07-06
    相关资源
    最近更新 更多