How to create an object with a vector of objects inside

181 Views Asked by At

I using angular 4 to create my website. But I need create a Object with a vecotor of objects inside. This don't work for me. My Code:

Object 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) {}
}

Object 2 (historicoData.module.ts)

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

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

My component ts code:

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)
      ])
  ];
}

The ERROR:

ng:///AppModule/AppComponent.ngfactory.js:7 ERROR Error: StaticInjectorError(AppModule)[HistoricoAComponent -> Array]:
StaticInjectorError(Platform: core)[HistoricoAComponent -> Array]: NullInjectorError: No provider for Array! at NullInjector.get (webpack-internal:///../../../core/esm5/core.js:1209) at resolveToken (webpack-internal:///../../../core/esm5/core.js:1507) at tryResolveToken (webpack-internal:///../../../core/esm5/core.js:1449) at StaticInjector.get (webpack-internal:///../../../core/esm5/core.js:1317) at resolveToken (webpack-internal:///../../../core/esm5/core.js:1507) at tryResolveToken (webpack-internal:///../../../core/esm5/core.js:1449) at StaticInjector.get (webpack-internal:///../../../core/esm5/core.js:1317) at resolveNgModuleDep (webpack-internal:///../../../core/esm5/core.js:11051) at NgModuleRef.get (webpack-internal:///../../../core/esm5/core.js:12284) at resolveDep (webpack-internal:///../../../core/esm5/core.js:12774)

1

There are 1 best solutions below

0
JGoodgive On

Looks like you are using the constructor to declare a property. Just declare the propert first in the class and remove it from the constructor parameters so that angular do not believe it should inject somrthing since you are overwriting it.