angular 사용 차단기 통일 설정 인터페이스 오류 알림

1938 단어 ng
차단기 코드 는 다음 과 같 습 니 다.
import {Injectable} from '@angular/core';
import {HttpEvent, HttpInterceptor, HttpHandler, HttpRequest, HttpResponse} from '@angular/common/http';
import {Observable} from 'rxjs/Observable';
import {ErrorObservable} from 'rxjs/observable/ErrorObservable';
import {catchError} from 'rxjs/operators';
import {mergeMap} from 'rxjs/operators';
@Injectable()
export class InterceptorService implements HttpInterceptor {
  constructor(private messageService: MessageService, private translate: TranslateService) {}

  intercept(req: HttpRequest, next: HttpHandler): Observable> {
    return next.handle(req).pipe(mergeMap((event: any) => {
        const err = event.body && event.body.err;
        if (err) {
          switch (err) {
            case -1:
              //            
              break;
            default:
              break;
          }
        }
        if (event instanceof HttpResponse && event.status !== 200) {
          return ErrorObservable.create(event);
        }
        return Observable.create(observer => observer.next(event)); //         
      }),
      catchError((res: HttpResponse) => {   //       
        this.messageService.clear();
        switch (res.status) {
          case 500:
            //       
            break;
          default:
            //       
        }
        return ErrorObservable.create(event);
      }));
  }
}

대응 하 는 module 에 공급 자 등록 하기:
import {HTTP_INTERCEPTORS, HttpClientModule} from '@angular/common/http';

@NgModule({
    providers: [
    {provide: HTTP_INTERCEPTORS, useClass: InterceptorService, multi: true}
    ]
})
export class SharedModule {
}

모든 모듈 에 차단기 가 필요 하 다 면 shareModule 에 등록 할 수 있 습 니 다. (app. module 에 등록 하면 프로젝트 를 처음 불 러 올 때 만 유효 합 니 다.)

좋은 웹페이지 즐겨찾기