Вероятно, самая подробная и всесторонняя статья на this
такова:
Нежное объяснение ключевого слова этого «this» в JavaScript
Идея позади this
заключается в понимании того, что типы вызова функции имеют важное значение при установке значения this
.
Когда возникают проблемы с идентификацией this
, не спрашивайте себя:
Где
this
взято из ?, но спросите себя:
Как вызывается функция ?
arrow function (специальный случай прозрачности контекста) спросите себя:
Какое значение имеет
this
, где определена функция стрелки ?Этот настрой правилен при работе с
this
и избавит вас от головной боли.
Функция doc (). Get () возвращает обещание, а не поток (Observable). С обещанием вы можете воспользоваться возможностью получить данные только один раз, если это ваша цель. Для того, чтобы сначала получить данные, а также прослушать изменения, вам нужно использовать метод doc (). OnSnapshot () .
В качестве дополнительного упоминания, я бы рекомендовал попробовать пакет Angular @ angular / fire (angular / angularfire2) для разработки Angular + Firebase, так как существует много официальной документации, специальной поддержки и вопросов уже там для этого. С его помощью можно уменьшить метод getOrder до:
getOrder(id: string): Observable<Order> {
console.log('on get order snapshot');
return db.doc<Order>(`orders/${id}).valueChanges();
}