Заполните класс модели и добавьте новое свойство из массива объектов в Angular Ionic - PullRequest
0 голосов
/ 28 марта 2020

Я не уверен, точен ли этот предмет, но лучше всего его описать.

Я работаю над приложением Ioni c 5 Angular с SQlite. Пытаюсь использовать классы / модели для размещения моих данных.

Например:

export class Person {
  id: number;
  name: string;
  details: PersonDetails; // how can I init these properties from Person? 

}

export class PersonDetails {
    value: boolean;
    enabled: boolean;
}

export class TestPage implements OnInit {

private person: Person[]; 

async ngOnInit() {   
const result = await this.db.getPeople(); // pulled from SQlite Database

const people = plainToClass(Person,  result); // plainToClass used here.
 }

} 

Вывод в консольный журнал становится ниже, что является правильным.

Array [
Person{id: 1, name: John Doe },
Person{id: 2, name: Jane Doe }]

Как я могу получить детали: PersonDetails, в массив результатов, чтобы он был включен в мою модель Person? У меня нет контроля над добавлением деталей в исходный объект json, поскольку, поскольку он подается из SQlite через мою базу данных.

В основном мне нужны детали для размещения изменений формы, люди зацикливаются в angular и изменяются на переключатели или формы взаимодействия должны храниться в PersonaDetails. Проблема в том, что Ануглар выдает неопределенную ошибку, так как подробности отсутствуют в json.

<ion-item *ngFor="let person of people">
    <ion-label class="label-sml">{{ person.id }}  - {{ person.name}}</ion-label>
    <ion-toggle [(ngModel)]="person.details.enabled" color="steel-red"></ion-toggle>
    <!-- This causes an issue since peson.details is not set -->
</ion-item>

Имеет ли это какой-то смысл? Может я об этом не так? Любая помощь будет оценена или даже пример, как это сделать. Я знаю, что могу добавить детали через ... obj, но не уверен, что это правильно, и, похоже, он не сопоставляется с моим классом PersonDetails Model.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...