【发布时间】:2020-03-15 14:46:21
【问题描述】:
我有一个 Angular 服务,它有一个名为 must_checkout 的布尔属性。我的服务还包含一个名为 observable_must_checkout 的属性,它是一个查看 must_checkout 的 BehaviorSubject。
然后,在我的组件中,我订阅了 observable_must_checkout。
这有效,并且组件在第一次 must_checkout 更改时收到事件。然而,这只触发一次,随后对 must_checkout 的更改不起作用:
服务:
import { Injectable, Input, Output } from '@angular/core';
import { BehaviorSubject } from 'rxjs';
export class OrderingService
{
must_checkout: boolean;
observable_must_checkout = new BehaviorSubject<boolean>(this.must_checkout);
constructor([...])
{
this.observable_must_checkout = new BehaviorSubject<boolean>(this.must_checkout);
}
ChangeSomething()
{
console.log("changing the value here...");
this.must_checkout = true;
}
}
父组件:
import { Component, OnInit } from '@angular/core';
import { OrderingService } from 'src/app/services/ordering.service';
@Component({
selector: 'app-settle',
templateUrl: './settle.component.html',
styleUrls: ['./settle.component.css']
})
export class SettleComponent implements OnInit
{
constructor(private OrderingService: OrderingService) { }
ngOnInit()
{
this.basket = new OrderingService();
this.basket.observable_must_checkout.subscribe((newValue: boolean) => { alert("value changed: " + newValue) });
}
ngOnDestroy() {
this.basket.observable_must_checkout.unsubscribe();
}
}
【问题讨论】:
标签: angular typescript rxjs observable