errorHandle angular 7 - PullRequest
       27

errorHandle angular 7

0 голосов
/ 21 мая 2019

Как управлять блокировкой ошибок в этой ситуации - управление ошибками в сервисе и отправка компоненту

Здесь хранятся данные в 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);
    });
  };

Ответы [ 2 ]

1 голос
/ 21 мая 2019

Вы можете добавить оператор catchError или передать вторую функцию вашей подписке функции.

Решение 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)
    );
};
1 голос
/ 21 мая 2019

Если вы хотите следовать по предметному пути:

//**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);
  };

или вы можете вернуть Observable из preloadAllProjects:

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




// == services ==

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