Наблюдаемый экземпляр начинает публиковать значения только тогда, когда кто-то подписывается на него. Вы подписываетесь, вызывая метод subscribe () экземпляра, передавая объект-наблюдатель для получения ответа.
.subscribe
- это не Angular2.
Это метод, полученный из rx js библиотека, которую Angular использует для внутреннего использования.
Если вы можете представить себя при подписке на рассылку и после подписки, каждый раз, когда появляется новая рассылка, они отправят ее к вам домой ( вызывается метод внутри подписки).
Вот что происходит, когда вы подписываетесь на источник журналов (который они называют Observable
в библиотеке rxjs
)
Все вызовы AJAX в Angular использует эту библиотеку за кулисами, и для того, чтобы использовать любую из них, вы должны использовать имя метода, например, get, а затем вызвать на нем подписку, потому что get возвращает и Observable.
Кроме того, когда вы делаете это, <button (click)="doSomething()">
Angular использует Observables
за сценой и подписывает вас на этот источник вещей, который в данном случае является событием click
.
Возвращаясь к нашей аналогии с Observables
и newsletter stores
, после того, как вы подпишетесь, как только и когда появится новый журнал, они отправят его вам, если вы не go, и откажетесь от них, что для чтобы это произошло, вы должны запомнить номер подписки или идентификатор, который в rx js будет выглядеть так:
let subscription = magazineStore.getMagazines().subscribe(
(newMagazine)=>{
console.log('newMagazine',newMagazine);
});
А когда вы больше не хотите получать журналы:
subscription.unsubscribe();
Кроме того, то же самое относится к
this.route.paramMap
, который возвращает Observable
, а затем вы подписываетесь на него.
Мой личный взгляд rxjs
была одной из величайших вещей, которые были принесены в JavaScript мир, и еще лучше в Angular.
Есть 150 ~ rxjs
методов (очень похожих на lodash
методы) и один то, что вы используете, называется switchMap