Попробуйте это в вашем auth.service.ts
коде:
getAllUsers(): Observable<any> {
return this.http.get('https://XXX.cloudfunctions.net/api');
}
в вашем компоненте ts:
allUsers$: Observable<any>;
...
ngOnInit() {
this.allUsers$ = this.authService.getAllUsers();
}
в шаблоне вашего компонента:
<p> {{ allUsers$ | async }} </p>
async
pipe автоматически подпишется на allUsers$
observable и доставит HTTP GET
запрос к вашему Cloud function
.
Важно : никогда не используйте функции внутри вашего шаблона и особенно с async
pipe.
Из-за системы обнаружения изменений, Angular необходимо выполнить функцию, чтобы узнать, изменился ли ее результат.
В случае, если функция возвращает Observable
с задержкой (запрос http, например), Angular подпишется на нее через канал async
и инициирует новое время, когда обнаружение изменений будет пришло время перерисовать компонент, который создаст новую наблюдаемую через функцию ... бесконечно l oop следовательно.
См., например, этот вопрос .
Предложение по улучшению (напрямую не связано с проблемой):
Кроме того, лучше ввести ваш ответ, например:
getAllUsers(): Observable<ApiResponse> {
return this.http.get<ApiResponse>('https://XXX.cloudfunctions.net/api');
}