AngularFireFunctions httpCallable не обновляется после ответа - PullRequest
0 голосов
/ 05 мая 2020

Используя 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, что не позволяет представлению использовать его значение?

...