我想更新一下我的页面
像"subscribe"one_answers";unsubscribe"多次与
在大约10分钟后更新页面,同时不在DataBase
上做标题。import { Component, OnDestroy, OnInit } from '@angular/core';
import { Subscription } from 'rxjs';
import { MaintenanceServicesService } from './MaintinanceService/maintenance-services.service';
@Component({
selector: 'app-maintenance',
templateUrl: './maintenance.component.html',
styleUrls: ['./maintenance.component.scss']
})
export class MaintenanceComponent implements OnInit, OnDestroy {
pageCards: any[] = []
subscripe?: Subscription
constructor(private _MaintenanceServicesService: MaintenanceServicesService) {
}
ngOnInit(): void {
this.subscripe = this._MaintenanceServicesService.pageCards.subscribe({
next: () => {
this.GetPageCards()
}
});
}
ngOnDestroy(): void {
if (this.subscripe) {
this.subscripe.unsubscribe()
}
}
GetPageCards() {
this._MaintenanceServicesService.GetServicesPageCards()
this.pageCards = this._MaintenanceServicesService.pageCards.getValue()
}
}
标题容易误导。当你的数据出现时,BehaviorSubject会发出值。
你不需要每隔一段时间就订阅/取消订阅数据,这就是可观察对象的全部目标——只要数据出现,你就会对其做出反应。
在这个例子中,你可以发现有一个定时器是如何创建可观察对象的,它有一些initialDelay
(你可以把它设置为0),在延迟之后,它使用interval
值来定义发射事件之间的时间。所以现在你有了一个流,每个interval
值都会发出一些东西,这里你想做一些事情-所以你从你的服务中获取数据并返回它。
另一件事-不需要订阅/退订,只需将结果分配给data$
变量(它是可观察的),并且在模板中您可以使用| async
管道,因此它将自动处理订阅/退订。
pageCards: any[] = []
subscripe?: Subscription
constructor(private _MaintenanceServicesService: MaintenanceServicesService) {
}
ngOnInit(): void {
this.subscripe = timer(0, 5000).subscribe(() => {
this._MaintenanceServicesService.pageCards.pipe(take(1)).subscribe({
next: () => {
this.GetPageCards()
}
});
})
}
这就是我如何做到的,谢谢你@akkonrad