Почему массив свойств всегда возвращает нуль в шаблоне - PullRequest
1 голос
/ 11 октября 2019

В моем угловом шаблоне есть следующий код

{{myObject.dayList|async|json}}

Однако на странице всегда отображается «ноль», несмотря на то, что объект заполняется в компоненте. Это подтверждается тем фактом, что я могу зарегистрировать его на консоли, и он заполнил данные.

Если я сделаю

{{myObject|async|json}}

Он отображает JSON для объекта, включая заполненный массив dayList!

Что происходит?

Это myObject

export class myObject{
    public timetableItems:TimetableItemViewModel[];
    public dayList:number[];
}

Содержимое журнала

{dayList: Array (1),scheduleItems: Array (2)} dayList: [1] scheduleItems: (2) [{…}, {…}] 0: {assignClass: {…}, assignRoom: {…}, assignPeriod: {…}} 1: assignClass: {classId: 1027, className: "English1", subjectId: 2004, periodCount: 1, assets: Array (1),…} assignPeriod: {periodId: 1006, dayNumber: 1, periodTypeId: 2, accountId: "00000000-0000-0000-0000-000000000000 ", periodNumber: 2} assignRoom: {roomId: 19, roomName:« Room1 », subjectId: 2004, assets: Array (1), емкость: 20,…} proto :Длина объекта: 2__proto: Array (0) proto : Object

Ответы [ 3 ]

1 голос
/ 11 октября 2019

Труба async работает, только если объект, который вы обвязываете, - Promise или Observable. В вашем случае, если myObject - это Observable, а myObject.dayList - нет, вам может потребоваться получить асинхронное значение myObject, а затем прочитать из него свойство dayList:

 {{ (myObject | async).dayList }}
1 голос
/ 11 октября 2019

Ваш myObject является наблюдаемым, поэтому его необходимо использовать в трубе async, поскольку он ожидает наблюдаемого:

{{ (myObject | async)?.dayList | json }}

Оператор безопасной навигации ?. гарантирует, что вы выигралиошибка нулевого указателя

0 голосов
/ 11 октября 2019

Ваш журнал имеет dayList, а не dayItems. Попробуйте:

`<div *ngIf="myObject| async; let obj">
    {{obj.dayList | json}}
 </div>`

Примечание: модифицированный ответ на основе комментария Кристиана

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