Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/32.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何订阅更改变量?_Javascript_Angular_Rxjs - Fatal编程技术网

Javascript 如何订阅更改变量?

Javascript 如何订阅更改变量?,javascript,angular,rxjs,Javascript,Angular,Rxjs,请帮助我订阅已更改的变量。我只做旋转器。微调器状态(真|假)在用存储: import { Injectable } from '@angular/core'; import { Response, Headers, URLSearchParams } from '@angular/http'; import { Observable } from 'rxjs/Observable'; @Injectable() export class GlobalVarsService { priv

请帮助我订阅已更改的变量。我只做旋转器。微调器状态(真|假)在用存储:

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;
  };    
}
但控制台输出遵循eror消息:

类型“boolean”不可分配给类型“Observable”


因为您要返回一个可观察的值并将其放在布尔值中,所以您可以将is变量的类型更改为可观察的,并使用异步管道获取值,或者将“数据”映射为布尔值(如果需要)

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

  constructor(private globalVarsService: GlobalVarsService) {  
        this.globalVarsService.getSpinnerState().subscribe(data => {
          console.log(data);
          this.isVisibleSpinner = data;
        });     
  }
}
导出类AppComponent{
私有isVisibleSpinner:可观察;
构造函数(专用globalvarservice:globalvarservice){
this.globalvarservice.getSpinnerState().subscribe(数据=>{
控制台日志(数据);
this.isVisibleSpinner=数据;
});     
}
}
app.component.html


加载。。。

因为您要返回一个可观察对象并将值放在布尔值中,所以您可以将可观察对象映射到所需的类型中
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;
        });     
  }
}
export class AppComponent {
    private isVisibleSpinner: Observable<boolean>;

  constructor(private globalVarsService: GlobalVarsService) {  
        this.globalVarsService.getSpinnerState().subscribe(data => {
          console.log(data);
          this.isVisibleSpinner = data;
        });     
  }
}
<div class="spinner-backdrop" *ngIf="isVisibleSpinner | async"></div>
<div class="spinner-area" *ngIf="isVisibleSpinner | async">
    <span class="spinner">loading...</span>
</div>