Как я могу принять C # ObjectResult или Объект в Angular API - PullRequest
0 голосов
/ 22 июня 2019

Я пытаюсь отправить сообщения об ошибках из C # в Angular API с помощью метода StatusCode(). Как я могу написать что-то на Angular, которое обрабатывает ответ StatusCode И правильные данные?

Мой угловой код (который обрабатывает правильные данные, но не StatusCode):

constructor(private http: HttpClient) { }

isUniqueEmailPhone(userid='',emailphone: string): Observable<Myclass[]> {
    return this.http.get('/api/me/isUniqueEmailPhone', {
        params: new HttpParams()
            .set('userid', userid)
            .set('emailphone', emailphone)
    })}

c # API возвращает: StatusCode(500,"Error xyz") Все ломается

c # API возвращает new List<Myclass>() Все отлично работает

1 Ответ

0 голосов
/ 25 июня 2019

В итоге я добавил трубу с ошибкой улова в Observable следующим образом:

isUniqueEmailPhone(userid='',emailphone: string): Observable<Myclass[]> {
return this.http.get<CardType[]>('/api/me/isUniqueEmailPhone')
    .pipe(catchError(this.handleError<CardType[]>('getAllCardTypes')));

Это вызывает метод ошибки дескриптора, который я скопировал из здесь и изменил. Этот метод теперь возвращает пустой объект типа (в данном случае CardType[]), который возвращается, чтобы все могло продолжаться после регистрации ошибки:

private handleError<T>(operation = 'operation', result?: T) {
    return (error: any): Observable<T> => {
        let res = "Service error: " + `${operation} failed\n`
        if (error instanceof HttpErrorResponse) { //add more data if this is HttpErrorResponse type
            res += 'Msg: '+error.message + '<br>Status: ' + error.status + '<br>Detail: ' + error.error + '<br>Text: ' + error.statusText + '<br>Object: ' + JSON.stringify(result)
        }
        alert(res);
        // Let the app keep running by returning an empty result.
        return of(result as T);
    };
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...