getCompte()
возвращает Observable<Compte>
.
Почему он просто не возвращает Compte
напрямую?
Поскольку он не может: AJAX-запросы, как показывает их имя, асинхронны : вы отправляете запрос, немедленно возвращаете наблюдаемое и намного позже, когда ответ, наконец, возвращается, observable уведомляет своего подписчика, что compte наконец доступен.
В течение всего этого времени компонент отображается, а его переменная detail$
еще не инициализирована и поэтому имеет значение undefined
. Итак, поскольку шаблон пытается отобразить свое имя, вы получаете исключение.
В шаблоне отображать детали, только если они есть:
<div *ngIf="detail">...</div>
Кроме того, переименуйте его в detail
или лучше: compte
или даже лучше: account
. Суффикс $
обычно используется для переменных типа Observable, а detail$
не является наблюдаемым.
Кажется, вы пришли из Java-фона, где вы используете геттеры и сеттеры для всего. В TypeScript нет необходимости: вы можете просто использовать открытые поля и переключаться на методы получения и установки, если они действительно необходимы, без изменения способа доступа клиентов к этим свойствам. Имя fromJSON
также является плохим выбором: метод не принимает строку JSON в качестве аргумента.
Наконец, как и в Java, свойства обычно начинаются со строчной буквы в TypeScript / JavaScript.