2017-07-15 5 views
1

Grundsätzlich versuche ich eine gui für die einfachere Dateibearbeitung zu erstellen.Kann Eigenschaft 'Datum' von undefined nicht lesen

Ich habe ein Array wie folgt aus: (Die Tasten sind dynamisch, so dass die Anordnung nicht eine Vorlage nicht verwendet und ich kann beziehen sich auf seine Inhalte.)

console.log output here for the array

Wenn ich Schleife bin versucht, durch es gibt mir eine Fehlermeldung:

Cannot read property 'date' of undefined

der Fehler in dieser Zeile in dem multiarray.component.html geschieht:

<ng-template [ngIf]="getType(configFile[key][sub]) === 'multiarray'"> 
    <multiarray-component [key]="sub" [configFile]="configFile" [value]="configFile[key][sub]" [descriptions]=""></multiarray-component> 
</ng-template> 

Code: multiarray.component.html

<div class="col-md-12"> 
    <h4>{{key}}</h4> 

    <div class="row"> 

    <ng-template [ngIf]="getType(value) !== 'multiarray'"> 
     <ng-template [ngIf]="getType(configFile[key]) === 'text' || getType(configFile[key]) === 'number'"> 
     <input-component [key]="key" [value]="configFile[key]" [descriptions]=""></input-component> 
     </ng-template> 

     <ng-template [ngIf]="getType(configFile[key]) === 'boolean'"> 
     <checkbox-component [key]="key" [value]="configFile[key]" [descriptions]=""></checkbox-component> 
     </ng-template> 

     <ng-template [ngIf]="getType(configFile[key]) === 'array'"> 
     <array-component [key]="key" [value]="configFile[key]" [descriptions]=""></array-component> 
     </ng-template> 
    </ng-template> 

    <ng-template [ngIf]="getType(value) === 'multiarray'"> 
     <div *ngFor="let sub of getKeys(value)"> 

     <ng-template [ngIf]="getType(configFile[key][sub]) === 'multiarray'"> 
      <multiarray-component [key]="sub" [configFile]="configFile" [value]="configFile[key][sub]" [descriptions]=""></multiarray-component> 
     </ng-template> 

     <ng-template [ngIf]="getType(configFile[key][sub]) === 'text' || getType(configFile[key][sub]) === 'number'"> 
      <input-component [key]="sub" [value]="configFile[key][sub]" [descriptions]=""></input-component> 
     </ng-template> 

     <ng-template [ngIf]="getType(configFile[key][sub]) === 'boolean'"> 
      <checkbox-component [key]="sub" [value]="configFile[key][sub]" [descriptions]=""></checkbox-component> 
     </ng-template> 

     <ng-template [ngIf]="getType(configFile[key][sub]) === 'array'"> 
      <array-component [key]="sub" [value]="configFile[key][sub]" [descriptions]=""></array-component> 
     </ng-template> 
     </div> 
    </ng-template> 
    </div> 

    <span *ngFor="let description of descriptions">{{description}}</span> 
</div> 

multiarray.component.ts

import {Component, Input} from "@angular/core"; 

@Component({ 
    selector: 'multiarray-component', 
    templateUrl: './multiarray.component.html', 
    styles: [` 
    span { 
     display: block; 
     font-size: 11px; 
    } 
    `], 
}) 
export class MultiArrayComponent { 
    @Input() key: string; 
    @Input() value: object; 
    @Input() configFile: object; 
    @Input() descriptions: string[]; 

    getType(obj): string { 
    let type = Object.prototype.toString.call(obj); 
    switch (type) { 
     case "[object String]": { 
     return "text"; 
     } 
     case "[object Number]": { 
     return "number"; 
     } 
     case "[object Boolean]": { 
     return "boolean"; 
     } 
     case "[object Array]": { 
     return "array"; 
     } 
     case "[object Null]": { 
     return "null"; 
     } 
     case "[object Object]": { 
     return "multiarray"; 
     } 
     default: 
     return "unknown"; 
    } 
    } 

    getKeys(object: object): string[] { 
    return Object.keys(object); 
    } 
} 

Kann jemand erklären, was ich falsch mache? Vielen Dank.

Antwort

0

Behoben. Das Problem war, dass ich die Daten von configFile [key] [sub] statt Wert [sub]

zu bekommen versucht,
Verwandte Themen