离子3如何在ErrorHandlerService中注入服务/提供商



问题

========

当我将ConfigService注入Inside Inserife InserryHandlerService以呈现吐司时,给我一个错误:errorhandlerservice.ts:36 发生了:错误:未识别(在承诺中(:typeError:无法读取未定义的

的属性'_applog'
 export class ErrorHandlerService implements ErrorHandler {
      private _appLog: ConfigService;
      constructor (private injector: Injector) {
        setTimeout(() => {
          this._appLog = injector.get(ConfigService);
        }, 0);
      }
      handleError(error: Error | HttpErrorResponse) {
          if (error instanceof HttpErrorResponse) {
              if (!navigator.onLine) {
                console.log('Please, check your internet connection');
              } else if(error.status === 401){
                console.log(error.message);
                this._appLog.presentToast();
              }else {
                console.log(error.message);
              }
            } else {
              console.log('Not Http Error');
          }
          // Log the error anyway
          console.error('It happens: ', error);
      }  
    }

    @Injectable()
    export class ConfigService {
        constructor(private storage: Storage){
        }
        presentToast(){
            console.log("test");
        }
    }

 getUsers(){
        let promise = new Promise((resolve, reject) => {
            let apiURL = `${this.configS.apiRootV1}/users`;
            this.http.get(apiURL).toPromise()
                .then((res) => {
                    console.log(res);
                    resolve(res);
                }).catch(this.errorHandlerService.handleError);
        });
        return promise;
    }

在handingerror函数'this'中是不确定的。尝试将" this"的值发送使用" bind":

.catch(this.errorHandlerService.handleError.bind(this.errorHandlerService));

最新更新