#angular
#angular
Вопрос:
Может кто-нибудь, пожалуйста, помочь мне и сказать мне, почему мой наблюдаемый пустой?
класс
ionViewWillEnter(): void {
this.notificationsSvc.fetchNotifications();
}
ngOnInit(): void {
this.notificationSubscription = this.notificationsSvc.notifications.subscribe(
(data) => {
console.log(data) //this is empty
}
);
}
Обслуживание
import { Injectable } from "@angular/core";
import { BehaviorSubject } from "rxjs";
import { HttpClient } from "@angular/common/http";
import { tap } from "rxjs/operators";
@Injectable()
export class NotificationsService {
private _notifications = new BehaviorSubject({});
constructor(private httpClient: HttpClient) {}
get notifications() {
return this._notifications.asObservable();
}
fetchNotifications() {
return this.httpClient
.get("https://website.com/notifications.json")
.pipe(tap((data) => this._notifications.next(data)));
}
}
Средство получения уведомлений всегда возвращает пустой. Я не уверен, что еще делать…
Комментарии:
1. Где вы используете наблюдаемую, созданную fetchNotifications()?
2. @BerkKurkcuoglu добавил дополнительную информацию
3. вам нужно
subscribe
войтиthis.notificationsSvc.fetchNotifications().subscribe();
, чтобы позволитьtap
работать4. Кажется, ничто не подписывается на fetchNotifications ..?
Ответ №1:
Наблюдаемое не дает результатов, если вы не подписываетесь на него, поэтому вам нужно подписаться на наблюдаемое из fetchNotifications(), вот так:
ionViewWillEnter(): void {
this.notificationsSvc.fetchNotifications().subscribe();
}
P.S. Чтобы избежать подобных проблем, я бы настоятельно рекомендовал указать параметры и возвращаемые типы ваших функций и полностью использовать Typescript.