1

I'm trying to add an object array to an array in TypeScript (for an Angular 2 app). Here's a stripped down and simplified version of my code:

mylist.ts:

export class myList {
    constructor(
        Number1: number,
        String1: string
    ){}
}

mylist.component.ts:

import { myList } from './myList';

export class ProductDetailComponent { 

    myNumber: number;
    myString: string;

    myList: Array<myList>;

    constructor() {
        this.myNumber = 10;
        this.myString = "some text";
    }

    addNavigation() {
        this.myList = [ new myList(this.myNumber, this.myString) ];
        console.log(JSON.stringify(this.myList));
    }

}

Output:

[{}]

What am I doing wrong?

I_LIKE_FOO
  • 2,744
  • 3
  • 16
  • 18

2 Answers2

4

You're not binding to a property of MyList thus your object is empty.

Change your class to the following

export class myList {
    constructor(
        public Number1: number,
        public String1: string
    ){}
}

By adding public or private TypeScript will create properties for you. Now the result will be:

[{Number1: val, String1: val}]
Dieterg
  • 16,118
  • 3
  • 30
  • 49
1

You never set properties of the myList object in its constructor. Try this:

export class myList {
    constructor(Number1: number, String1: string) {
        this.number = Number1;
        this.string = String1;
    }
}
dfsq
  • 191,768
  • 25
  • 236
  • 258