Создать переменную класса Model в TypeScript - PullRequest
0 голосов
/ 24 сентября 2019

У меня есть модель EmailModel Модель класса:

    export class EmailModel {

    public name: String;
    public lastname: String;
    public address: String;
    public company: String;
    public zipcode: number;
    public city: String;
    public phonenumber: number;
    public email: String;
    public product: ProductModelOrder[] = [];



    constructor(name: String, lastname: String, address: String, company: String, zipcode: number, city: String, phonenumber: number, email: String,product: ProductModelOrder[]) {
        this.name = name;
        this.lastname = lastname;
        this.address = address;
        this.company = company;
        this.zipcode = zipcode;
        this.city = city;
        this.phonenumber = phonenumber;
        this.email = email;
        this.product = product;
    }
}

И я создал переменную emailModel моего класса EmailModel.Это мой var: emailModel =< EmailModel>{};

Я получаю неопределенную ошибку, когда использую this.emailModel.product, но когда я использую this.emailModel.name или другие свойства, всегда хорошо.

Ответы [ 3 ]

1 голос
/ 24 сентября 2019

Атрибут продукта является массивом «ProductModelOrder» и также должен быть инициализирован

1 голос
/ 24 сентября 2019

Одна вещь - это определение вашего класса, другая вещь - создание экземпляра вашего объекта.Ваше определение класса выглядит хорошо.

Теперь давайте попробуем создать экземпляр:

let products: ProductModelOrder[] = []; //Creates an instance for the array of products
let product: ProductModelOrder = new ProductModelOrder(...); //Creates an instance for a product
product.someproperty = "somevalue"; //Sets value to property
products.push(product); //Adds the product to the list

let emailModel = new EmailModel(..., products); //Instantiates the main object, passing the instantiated array

console.log(emailModel.products[0].someproperty);//Logs the value of the property "someproperty", in this example it should print "somevalue".

Обратите внимание, что я переименовал свойство EmailModel.product в EmailModel.product s , поскольку оно может содержать много продуктов.

1 голос
/ 24 сентября 2019

вам нужно инициализировать массив как пустой массив, чтобы использовать его как обычное свойство объекта -

public product: ProductModelOrder[] = [];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...