Angular2 全局变量服务



我正在尝试创建一个全局变量来处理何时在我的网站上显示加载器。我遵循了这个,但我收到以下错误。

泛型类型"观察者"需要此行上的 1 个类型参数

this.ShowLoaderChange = new Observable((observer:Observer){

此外,我似乎看不到他们在哪里为ChangeObserver 声明了变量,因为我在这里使用:

this.ShowLoaderChangeObserver = observer;

和这里

this.ShowLoaderChangeObserver.next(this.ShowLoader);

import { Observer } from 'rxjs/Observer';
import { Observable } from 'rxjs/Observable';
import { Injectable } from 'angular2/core';
import { Subject }    from 'rxjs/Subject';
@Injectable()
export class LoaderService {
  public ShowLoader;
  ShowLoaderChange: Observable<any>;
  constructor() {
     this.ShowLoaderChange = new Observable((observer:Observer){
         this.ShowLoaderChangeObserver = observer;
     })
  }
  setData() {
    this.ShowLoader = !this.ShowLoader;
    this.ShowLoaderChangeObserver.next(this.ShowLoader);
  }
}

编辑:根据下面的答案更改我的代码后,它有意义 类型错误:无法读取 [null] 中未定义的属性"next"这来自生产线

this.ShowLoaderChangeObserver.next(this.ShowLoader);

我像这样调用函数

import {LoaderService} from '../LoaderService'
export class AdminDashboardComponent implements OnInit{
constructor (private loader:LoaderService){}
ngOnInit():any{
   this.loader.setData();

}}

编辑:新服务

import { Observer } from 'rxjs/Observer';
import { Observable } from 'rxjs/Observable';
import { Injectable } from 'angular2/core';
import { Subject }    from 'rxjs/Subject';
@Injectable()
export class LoaderService {
   public ShowLoader: boolean;
   ShowLoaderChange: Observable<boolean>;
   ShowLoaderChangeObserver: Observer<boolean>;
   constructor() {
      this.ShowLoaderChange = new Observable((observer:Observer<boolean>) 
     => {
         this.ShowLoaderChangeObserver = observer;
        })
   }
  setData() {
      this.ShowLoader = !this.ShowLoader;
      this.ShowLoaderChangeObserver.next(this.ShowLoader);
  }

}

您需要指定可观察量将生成的值类型作为类型参数。在您的情况下,由于您已将观察量键入为 ShowLoaderChange: Observable<any> ,因此您也可以将观察点的类型指定为 any:

this.ShowLoaderChange = new Observable((observer:Observer<any>) => {
    this.ShowLoaderChangeObserver = observer;
});

但是查看您的代码,您可能会将可观察量键入为 boolean 并避免使用 any,因为您只从观察器生成布尔值:

export class LoaderService {
  public ShowLoader: boolean;
  ShowLoaderChange: Observable<boolean>;
  ShowLoaderChangeObserver: Observer<boolean>;
  constructor() {
     this.ShowLoaderChange = new Observable((observer:Observer<boolean>) => {
         this.ShowLoaderChangeObserver = observer;
     })
  }
  setData() {
    this.ShowLoader = !this.ShowLoader;
    this.ShowLoaderChangeObserver.next(this.ShowLoader);
  }
}

最新更新