Angular 检测角度测量值的变化
我正在处理一个角度应用程序。我有一些屏幕。我有一个变量,它的值总是整数。对于某些屏幕,此变量值为1,对于某些屏幕,此变量值为2 我想检测这个变量的变化。例如,对于屏幕1,myVal为1,对于屏幕2,myVal变为2,对于屏幕5,myVal再次变为1。我想在myVal值从1变为2时打开一个弹出窗口。我面临的问题是,当我在屏幕4上时,当我从rabbitMq发送响应时,myVal的值立即变为1,如果条件未执行,则弹出窗口Angular 检测角度测量值的变化,angular,angular7,angular8,Angular,Angular7,Angular8,我正在处理一个角度应用程序。我有一些屏幕。我有一个变量,它的值总是整数。对于某些屏幕,此变量值为1,对于某些屏幕,此变量值为2 我想检测这个变量的变化。例如,对于屏幕1,myVal为1,对于屏幕2,myVal变为2,对于屏幕5,myVal再次变为1。我想在myVal值从1变为2时打开一个弹出窗口。我面临的问题是,当我在屏幕4上时,当我从rabbitMq发送响应时,myVal的值立即变为1,如果条件未执行,则弹出窗口 我该怎么做呢?假设您有一个服务-记住,在应用程序的整个运行过程中,服务是共享的
我该怎么做呢?假设您有一个服务-记住,在应用程序的整个运行过程中,服务是共享的
@Injectable({
providedIn: 'root',
})
export class DataService {
variableChange=new Subject<number>()
constructor() { }
sendValue(value)
{
this.variableChange.next(value)
}
}
接收来自任何其他组件的更改,该组件也将服务注入构造函数中,并进行下一步操作
this.dataService.variableChange.next(value)
如果需要,可以在下面的方式中使用变量的getter
_variable;
get variable()
{
return this._variable
}
set variable(value)
{
this._value=value;
this.dataService.variableChange.next(value)
}
//an instruction like
this.variable=2 //execute the variableChange
(*)例如,我们可以有一个main.app来注入构造函数并订阅
我们的主要部件可以是
<ng-container ngIf="variable==2">
<app-header></app-header>
</ng-container>
<router-outlet></router-outlet>
variable:number
ngOnInit()
{
this.dataService.variableChange.pipe(
distinctUntilChanged())
.subscribe(res=>{
this.variable=res
})
}
当在路由器出口中加载时,将显示“应用程序标题”。如果输出组件有一个按钮
<button (click)="click()">
click()
{
this.dataService.variableChange.next(0)
}
单击()
{
this.dataService.variableChange.next(0)
}
单击按钮时,“应用程序标题”消失使用带有更改处理程序的NgModel。使用Observable并订阅更改。另外,请添加一些相关的代码来回答这个问题,而不是评论,所以如果我只使用这些getter和setter,那么我就不需要使用observable。对吗?请你再详细解释一下这句话“从任何其他组件接收一个更改,该组件也在构造函数中注入了服务,并做出下一个”我需要在这里放置下一个声明,在这之后我更新了答案,我希望“解释”更清楚
ngOnInit()
{
this.dataService.variableChange.next(2)
}
<button (click)="click()">
click()
{
this.dataService.variableChange.next(0)
}