无法从 Angular 中的模型访问数组

Can not acces array from model in Angular

我一直在尝试从我的对象访问数组。 这是我的 class:

export class Competence {
private _id: string;
private _name: string;
private _isFinished: boolean;
private _subCompetences: string[];


constructor(name: string, isFinished: boolean, subCompetences: string[]) {
    this._name = name;
    this._isFinished = isFinished;
    this._subCompetences = subCompetences;
}

还有 getter 和 setter。

我一直在尝试从这段代码中的能力对象调用子能力:

export class StudentModuleDetailsComponent implements OnInit {


private competences: Competence[] = [];
private subcompetences: SubCompetence[] = [];

constructor() { }

ngOnInit() {
   this.getData()
 }
private showSubCompetences(competence: Competence) {
    this.chosenSubCompetences = [];
    console.log(competence.subCompetences)

通过点击事件调用 showSubCompetences() 方法,点击的权限作为参数给出。

权限对象在此方法中初始化,工作得很好。

private getData() {
 this._apiModulesDataService.getModuleById(this._studentDataService.moduleId).subscribe(
  data => {
    this._apiModulesDataService;
    var self = this;
    this.module = data[0];

    this.module.competences.forEach(function (comp) {
      self._apiCompetenceDataService.getCompetenceById(comp).subscribe(
        c => {
          if (!self.competences.includes(c)) {
            self.competences.push(c[0]);
          }
        }
      );
    });
  });
 }
}

现在当我点击权限时它只打印出 undefined。

当我只打印权限时

console.log(competence)

我得到这个 Json 作为输出

{id: "f39356b0-e2a9-11e8-858b-23856324831a", isfinished: null, name: 
 "Knippen", subcompetences: Array(2)}
  id: "f39356b0-e2a9-11e8-858b-23856324831a"
  isfinished: null
  name: "Knippen"
  subcompetences: Array(2)
    0: "08638e20-e2aa-11e8-858b-23856324831a"   
    1: "0d772570-e2aa-11e8-858b-23856324831a"
   length: 2

我该如何解决这个问题?

嗯,首先我建议修复你的模型以避免任何未来的错误:

export class Competence {
    private _id: string;
    private _name: string;
    private _isfinished: boolean;
    private _subcompetences: string[];

    constructor(name: string, isFinished: boolean, subCompetences: string[]) {
        this._name = name;
        this._isfinished = isFinished;
        this._subcompetences = subCompetences;
    }

    ...
}

然后,尝试像这样记录子能力:

console.log(competence.subcompetences)

此外,使用新模型,您应该也能正确获得 isfinished 属性...

希望对您有所帮助。