मैं वचन देता हूं कि मैं उस घटक पर नेविगेट कर सकता हूं जहां मैं त्रुटियों को प्रदर्शित करना चाहता हूं, लेकिन मैं वास्तव में इंटरसेप्टर से और घटक वर्ग में त्रुटियों को कैसे प्राप्त करूं। मुझे पता है कि घटकों के लिए मेरे पास अपनी वस्तुओं के मूल्यों को प्रदर्शित करने के लिए उन्हें रखने के लिए एक संपत्ति होनी चाहिए, और जिनके लिए मुझे प्रतिक्रिया प्राप्त करने के लिए बैकएंड पर जाने वाले तरीकों को प्राप्त, पोस्ट, पुट, अपडेट या डिलीट करना है। मैं इसके लिए बहुत नया हूं और केवल सर्वोत्तम प्रथाओं को सीखने की कोशिश कर रहा हूं, मुझे जो सलाह दी गई थी वह मेरे क्लाइंट साइड कैच ब्लॉक में राउटर डालना था जो उपयोगकर्ता को एक कस्टम संदेश के साथ घटक पर रीडायरेक्ट करता है, जिसे मैं समझता हूं कि कैसे करना है ऐसा करें लेकिन परीक्षण के उद्देश्य से मैं वास्तव में अपने एपीआई में बैकएंड पर कस्टम त्रुटि संदेश प्रदर्शित करना चाहता हूं। क्या मुझे उन्हें प्राप्त करने के लिए एक सेवा बनानी होगी या क्या मैं उन्हें इंटरसेप्टर से बाहर निकाल सकता हूं? मैं इसके साथ मिलने वाली किसी भी सहायता या सहायता की सराहना करूंगा। अग्रिम धन्यवाद।

import {
          HttpEvent,
          HttpHandler,
          HttpRequest,
          HttpErrorResponse,
          HttpInterceptor
} from '@angular/common/http';
import { Observable, throwError } from 'rxjs';
import { catchError, retry } from 'rxjs/operators';

export class ErrorIntercept implements HttpInterceptor {
   intercept(
     request: HttpRequest<any>,
        next: HttpHandler
     ): Observable<HttpEvent<any>> {
        return next.handle(request).pipe(
           retry(1),
              catchError((error: HttpErrorResponse) => {
                let errorMessage = '';
                  if(error.error instanceof ErrorEvent) {
                    //Client side error
                  errorMessage = `Error: ${error.error.message}`;
                  router.navigate('/login');

                   } else {
                    //server side error
                     errorMessage = `Error Status: ${error.status}\nMessage: ${error.message}`;
                                   router.navigate('/login');

                          }
                     console.log(errorMessage);
                     return throwError(errorMessage);
                          })
                    )
          }
}
0
user12799293 10 सितंबर 2020, 18:22

1 उत्तर

सबसे बढ़िया उत्तर

हाय बस किसी भी अलर्ट संदेश सेवा का उपयोग करें जिसे आप एप्लिकेशन के किसी भी हिस्से से हिट कर सकते हैं और यह आपके एप्लिकेशन में टोस्ट संदेश के रूप में प्रदर्शित होगा।

मैंने इसे ngx-toastr का उपयोग करके भी लागू किया है, इसका npm पैकेज बस इंस्टॉल करें और इसकी सेवा को कॉल करें

@Injectable()
export class ErrorInterceptor implements HttpInterceptor {
  constructor(
    private authenticationService: AuthenticationService,
    private toastr: ToastrService
  ) { }

  intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
    return next.handle(request).pipe(catchError(err => {
      if (err.status === 401) {
        // auto logout if 401 response returned from api
        this.authenticationService.LogoutUser();
        location.reload(true);
      }
      this.toastr.error(AppMessages.SOME_THING_WENT_WRONG);
      // this.alertService.error('Something went wrong');
      const error = err.error.message || err.statusText;
      this.GetSetLogForServer(err);
      return throwError(error);
    }));
  }
0
ShivShankar Namdev 10 सितंबर 2020, 15:30