Как я могу получить 1 единственный документ в пожарном магазине? - PullRequest
0 голосов
/ 17 ноября 2018

Я потратил около 2 часов на эту глупость.Все, что я вижу при регистрации, - это объект DocumentSnapshot, и в моем представлении шаблона ничего не отображается.Что я делаю неправильно?Должен ли я просто передавать весь документ в свой компонент, а не пытаться получить один документ на основе идентификатора?

//component.ts

constructor(db: AngularFirestore) { 
    this.contactCollection = db.collection('contacts');

    this.contact = this.contactCollection.doc('YYlKh7Gg7khN8L636iYE')
}

//viewTemplate.ts

{{this.contact | async}}

Ответы [ 2 ]

0 голосов
/ 17 ноября 2018

Вот формальный ответ на мой комментарий:

contact - это Promise, который необходимо развернуть, чтобы получить базовое значение.В шаблоне нам нужен способ передать это:

  1. AsyncPipe
  2. Оператор безопасной навигации ? (обеспечиваетмы не пытаемся получить доступ к распакованным значениям, которые преждевременно вызывают ошибку времени выполнения)

Собираем все это вместе в шаблоне:

{{(contact | async)?.some_prop}}

Это соответственно ожидает доступа к some_prop(из возвращаемого значения Promise) после распаковки contact.

0 голосов
/ 17 ноября 2018

Вам не хватает функции .valueChanges(). Добавил его ниже, теперь вы вернете весь документ обратно в viewTemplate.ts и сможете вызвать любое из полей в нем.

//component.ts

constructor(db: AngularFirestore) { 
    this.contactCollection = db.collection('contacts');

    this.contact = this.contactCollection.doc('YYlKh7Gg7khN8L636iYE').valueChanges();
}

//viewTemplate.ts

{{this.contact | async}}

.valueChanges ();

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