gpt4 book ai didi

javascript - 如何订阅改变变量?

转载 作者:行者123 更新时间:2023-12-03 03:28:51 28 4
gpt4 key购买 nike

请帮助我订阅更改的变量。我制作简单的旋转器。服务中的微调器状态(true|false)存储:

import { Injectable } from '@angular/core';
import { Response, Headers, URLSearchParams } from '@angular/http';
import { Observable } from 'rxjs/Observable';

@Injectable()
export class GlobalVarsService {
private isVisibleSpinner: boolean = false;

getSpinnerState(): Observable<boolean> {
return this.isVisibleSpinner;
};

setSpinnerState(state): void {
console.log('setSpinnerState', state);
this.isVisibleSpinner = state;
};
}

在组件模板中,我通过条件显示微调器:

<div class="nav">
<a [routerLink]="['/select']">select</a>
<a [routerLink]="['/output']">output</a>
</div>

<router-outlet></router-outlet>

<div class="spinner-backdrop" *ngIf="isVisibleSpinner"></div>
<div class="spinner-area" *ngIf="isVisibleSpinner">
<span class="spinner">loading...</span>
</div>

在组件中,我尝试订阅服务 isVisibleSpinner 变量中的更改:

import { Component } from '@angular/core';
import { Response } from '@angular/http';
import 'rxjs/add/operator/map'
import { GlobalVarsService } from './services/global-vars.service';

@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent {
private isVisibleSpinner: boolean;

constructor(private globalVarsService: GlobalVarsService) {
this.globalVarsService.getSpinnerState().subscribe(data => {
console.log(data);
this.isVisibleSpinner = data;
});
}
}

但是控制台输出遵循错误消息:

Type 'boolean' is not assignable to type 'Observable'.

最佳答案

因为您要返回一个 observable 并将值放入 bool 值中,所以您可以将 is 变量的类型更改为 Observable 并使用异步管道来获取值或将您的“数据”映射到 bool 值(如果您想要的话)

export class AppComponent {
private isVisibleSpinner: Observable<boolean>;

constructor(private globalVarsService: GlobalVarsService) {
this.globalVarsService.getSpinnerState().subscribe(data => {
console.log(data);
this.isVisibleSpinner = data;
});
}
}

app.component.html

<div class="spinner-backdrop" *ngIf="isVisibleSpinner | async"></div>
<div class="spinner-area" *ngIf="isVisibleSpinner | async">
<span class="spinner">loading...</span>
</div>

关于javascript - 如何订阅改变变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46183961/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com