Как создать объект с вектором объектов внутри

Я использовал 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 (historyoData.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: ///../../../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)


person Lucas Alves    schedule 19.01.2018    source источник
comment
Похоже, вы используете конструктор для объявления свойства. Просто сначала объявите свойство в классе и удалите его из параметров конструктора, чтобы angular не считал, что он должен вводить что-то, поскольку вы его перезаписываете. Справочная история с this.history.   -  person JGoodgive    schedule 19.01.2018
comment
Спасибо, JGoodgive. Это нормально работает.   -  person Lucas Alves    schedule 19.01.2018
comment
Здорово. Добавил его как ответ, чтобы вы могли отметить ответ.   -  person JGoodgive    schedule 19.01.2018


Ответы (1)


Похоже, вы используете конструктор для объявления свойства. Просто сначала объявите свойство в классе и удалите его из параметров конструктора, чтобы angular не считал, что он должен вводить что-то, поскольку вы его перезаписываете.

person JGoodgive    schedule 19.01.2018