Angular 角度2-可观察到不流动?

Angular 角度2-可观察到不流动?,angular,observable,Angular,Observable,我已经设置了这样一个可观察的模式,它通常是有效的,但当我在自定义错误处理程序中使用它时,它不起作用 显然,构造函数中的代码从未执行过,但它是一个常规类,我不能使用onInit,不是吗 编辑:我尝试将代码放入一个init函数中,该函数在订阅之前从对话框组件调用,但是当发生错误时,调用handleError,似乎上下文已更改,并且没有定义任何内容(observer和observable未定义) 自定义错误处理程序: export class CustomErrorHandler implements

我已经设置了这样一个可观察的模式,它通常是有效的,但当我在自定义错误处理程序中使用它时,它不起作用

显然,构造函数中的代码从未执行过,但它是一个常规类,我不能使用onInit,不是吗

编辑:我尝试将代码放入一个init函数中,该函数在订阅之前从对话框组件调用,但是当发生错误时,调用handleError,似乎上下文已更改,并且没有定义任何内容(observer和observable未定义)

自定义错误处理程序:

export class CustomErrorHandler implements ErrorHandler 
{
   public errors : Observable<Error>;
   private errorsObserver : Observer<Error>;

   constructor() {

       this.errors = Observable.create((observer :Observer<Error>)=>  <<<<<<THIS ONE NEVER GETS EXECUTED
        {
          this.errorsObserver = observer;
       }).share();
   }

  handleError(error:Error) {
    this.errorsObserver.next(error);
  }
}

@NgModule({
  providers: [{provide: ErrorHandler, useClass: CustomErrorHandler}]
})
export class CustomErrorHandlerModule {}

我认为问题在于您没有使用CustomErrorProvider的同一个实例

您的提供程序是ErrorHandler:

@NgModule({
  providers: [{provide: ErrorHandler, useClass: CustomErrorHandler}]
})
在对话框中,必须将ErrorHandler注入并强制转换为CustomErrorHandler:

constructor(errorHandler: ErrorHandler) {
     this.customErrorHandler = errorHandler as CustomErrorHandler;
     ...
}
它可以工作(可观察到的触发器),但我的对话框不会显示…在其他情况下,对话框可以工作,因此,当抛出异常时,流可能会以某种方式中断,或者可能是因为错误发生在服务中?
constructor(errorHandler: ErrorHandler) {
     this.customErrorHandler = errorHandler as CustomErrorHandler;
     ...
}