Angular 误差手柄角度7

Angular 误差手柄角度7,angular,error-handling,angular-errorhandler,Angular,Error Handling,Angular Errorhandler,在这种情况下如何管理错误块-在服务中管理错误并发送到组件 在这里,在第一次加载时将数据存储在BehaviorSubject中,并从需要的位置订阅数据 当应用程序运行时,只需从app.component初始化预加载函数,但我想知道这是否是一个错误 //**app component** //just initializing preload function() when the app runs - but I want to know here if its an error ngOnInit

在这种情况下如何管理错误块-在服务中管理错误并发送到组件

在这里,在第一次加载时将数据存储在BehaviorSubject中,并从需要的位置订阅数据

当应用程序运行时,只需从app.component初始化预加载函数,但我想知道这是否是一个错误

//**app component**
//just initializing preload function() when the app runs - but I want to know here if its an error
ngOnInit() {
    this.projectsService.preloadAllProjects();
}




// == services ==

//preload all projects
  preloadAllProjects(){
    this.http.get('/api/project/allprojects').pipe( map( response => response )).subscribe(result => {
      this.allProjectsBehavior.next(result);
    });
  };

如果要遵循主题路径,请执行以下操作:

//**app component**
//just initializing preload function() when the app runs - but I want to know here if its an error
ngOnInit() {
    this.projectsService.preloadAllProjects();
    this.projectService.error$.subscribe(error => console.log(error));
}




// == services ==

//preload all projects
  error$: Subject<string> = new Subject();
  preloadAllProjects(){
    this.http.get('/api/project/allprojects').pipe( map( response => response )).subscribe(result => {
      this.allProjectsBehavior.next(result);
    }, error => this.error$.next(error);
  };

如果要遵循主题路径,请执行以下操作:

//**app component**
//just initializing preload function() when the app runs - but I want to know here if its an error
ngOnInit() {
    this.projectsService.preloadAllProjects();
    this.projectService.error$.subscribe(error => console.log(error));
}




// == services ==

//preload all projects
  error$: Subject<string> = new Subject();
  preloadAllProjects(){
    this.http.get('/api/project/allprojects').pipe( map( response => response )).subscribe(result => {
      this.allProjectsBehavior.next(result);
    }, error => this.error$.next(error);
  };
您可以添加catchError操作符,或者将第二个函数传递给subscribe函数

解决方案1:

preloadAllProjects(){
  this.http.get('/api/project/allprojects').pipe(
    catchError(err => console.error(err)), 
    map( response => response )).subscribe(result => {
      this.allProjectsBehavior.next(result);
  });
};
解决方案2:

preloadAllProjects(){
  this.http.get('/api/project/allprojects').pipe(
    map( response => response )).subscribe(result => {
      this.allProjectsBehavior.next(result);
    },
    error => console.error(error)
    );
};
您可以添加catchError操作符,或者将第二个函数传递给subscribe函数

解决方案1:

preloadAllProjects(){
  this.http.get('/api/project/allprojects').pipe(
    catchError(err => console.error(err)), 
    map( response => response )).subscribe(result => {
      this.allProjectsBehavior.next(result);
  });
};
解决方案2:

preloadAllProjects(){
  this.http.get('/api/project/allprojects').pipe(
    map( response => response )).subscribe(result => {
      this.allProjectsBehavior.next(result);
    },
    error => console.error(error)
    );
};

如果出现错误,它可以工作,但是如何设置“等待错误”的时间,当我从服务器注释代码行时,我无法得到错误-------//return res.json({project:project,status:200});是的,获取错误花费的时间太长,是否有设置等待http错误时间的选项?您可以在订阅方法中设置超时,并在一定时间后取消订阅。但这是一个解决办法。您需要等待服务器错误响应。只是想知道,为什么要添加这两行?观察者:下一个(正确);observer.complete()以在成功的情况下完成observable。如果出现错误,它可以工作,但是如何设置“等待错误”的时间,我在注释服务器上的代码行时无法得到错误-------//返回res.json({project:project,status:200});是的,获取错误花费的时间太长,是否有设置等待http错误时间的选项?您可以在订阅方法中设置超时,并在一定时间后取消订阅。但这是一个解决办法。您需要等待服务器错误响应。只是想知道,为什么要添加这两行?观察者:下一个(正确);observer.complete()在成功的情况下完成observable。