Используя Observable из AngularFireFunctions 'httpsCallable
, представление никогда не обновляется со значением даже после возврата http-запроса.
У меня есть простой компонент, который использует AngularFireFunctions, чтобы сделать httpCallable простой функцией. Я вижу, как выполняется вызов в инспекторе сети браузера, и у меня есть tap(x=>console.log(x))
на наблюдаемом, который действительно регистрирует значение, возвращаемое функцией. Однако {personObservable | async | json}
имеет значение null даже после того, как наблюдаемый имеет значение (журнал консоли из триггеров касания).
Компонент:
import { AngularFireFunctions } from '@angular/fire/functions';
import { Observable } from 'rxjs';
import { tap } from 'rxjs/operators';
@Component({
selector: 'app-simple-test',
template: '{{personObservable | async | json}}'
})
export class SimpleTestComponent implements OnInit {
personObservable: Observable<any> = this.fireFunctions
.httpsCallable('getPerson')({})
.pipe(
tap(person => console.log(person))
);
constructor(
private fireFunctions: AngularFireFunctions) {
}
...
Функция Firebase:
import * as functions from 'firebase-functions';
export const viewInvite =
functions.https.onCall((data, context) => {
return {name: "test name"};
});
Как и ожидалось, загрузка страницы вызывает http-запрос к функции firebase, и консоль будет содержать {name: "test name"}
, указывающее, что http-запрос сработал. , тап был запущен, и теперь наблюдаемое имеет значение. Страница по-прежнему будет отображать «null».
Я попытался заменить httpsCallable(...)(...)
простым of({name:"test"})
, и это сработало.
Есть ли что-то особенное в Observable, которое возвращает httpsCallable, что не позволяет представлению использовать его значение?