2

Если я создаю HTTP-запрос Angular2 с использованием типов, тогда назначайте ответ также с определенным типом, и если ответ сервера не относится к типу, тогда я могу захватить ошибка вместо того, чтобы взломать приложение и сделать операцию?Как я могу захватить ошибку, если данные ответа HTTP Angular2 не соответствуют типу

.... интерфейсы .....

export interface loginUser { 
    username: string; 
    password: string; 
} 

export interface loginResData { 
    username: string; 
    details: string; 
} 

... Компонент Код .....

user: loginUser 
constructor(private _httpprovider: Httpprovider, private _router: Router) { 

    } 

    login(user) { 
    this._httpprovider.httpReq(this.url, 'POST', user, null).subscribe((data: loginResData) => { 
     this.loginEvent.emit(data); 
    }); 
    } 

Как захватить ошибку, возникающую на данных не по типу data: loginResData. Возможно ли это в первую очередь?

ответ

2

Интерфейсы игнорируются во время выполнения. Лучше создать класс как

export class loginResData { 
    username: string; 
    details: string; 
    constructor(data:any) { 
     if(data && data.username && data.details) { 
     this.username = data.username; 
     this.details = data.details; 
     } 
     throw 'loginResData is invalid or incomplete'; 
    } 
    } 
login(user) { 
    this._httpprovider.httpReq(this.url, 'POST', user, null) 
    .map(data:any => new oginResData(data)) 
    .subscribe((data: loginResData) => { 
     this.loginEvent.emit(data); 
    }); 
    } 
+0

Ok удивительным. Спасибо. – Gary