Кажется, что вы загружаете newOrder асинхронно.
В результате ваша страница будет обработана, но асинхронная задача еще не завершена.
Вы написали, что объявили this.newOrder.billing = {}
в конструкторе.
Из-за этого он теперь пытается прочитать newOrder.billing.first_name
в вашем html.
newOrder.billing
- пустой объект, поэтому first_name
там нет.
Только после завершения асинхронной задачи эти данные будут существовать. Но в настоящее время Angular выдает ошибку до того, как это может произойти.
Есть два очень распространенных способа справиться с подобной ситуацией.
Вы можете сказать шаблону, что он НЕ должен отображать деталь с отсутствующими данными
<ion-item *ngIf="newOrder.billing">
<ion-label>First Name</ion-label>
<ion-input type="text" [(ngModel)]="newOrder.billing.first_name"></ion-input>
</ion-item>
Тогда * ngIf увидит, что переменная не определена и эта часть шаблона не будет отображаться в DOM => без ошибок :-)
Как только асинхронная задача завершится, переменная больше не будет неопределенной, и будет показана часть шаблона.
Другой способ (более распространенный, когда вы просто хотите показать данные) использует
{{ newOrder.billing.first_name | async }}
Асинхронный канал также гарантирует, что Angular справится с этим.
В сочетании с [ngModel] я думаю, что асинхронный канал не будет работать. Но, возможно, стоит попробовать.
С уважением