2017-03-06 43 views
1

我不会粘贴任何代码,因为这是一个普遍的问题。如果没有任何回报,我需要弄清楚如何听。由于没有任何东西存在,我无法获得任何物品。我只收到我的GET请求消息“400 (Bad Request)”。(控制台)。如何使用Angular * ngIf监听400(错误请求)?

如何禁用按钮如果有“400 (Bad Request)”(不存在)?

有没有办法在前端听这个?

谢谢

+0

由于您没有提供代码,因此很难提供帮助。 (...)。map(...)。subscribe(res => {...},err => {console.log(err.status)}); //将在控制台中写入400。 – Ploppy

+0

从这里开始,你可以用它做你想做的一切。 – Ploppy

+0

请给我一分钟:) –

回答

1

在Angular2中,您需要从响应中捕获错误。

badRequest: boolean = false; 

this.appService.myHttpCall.subscribe(
    data => // do something with success, 
    error => { 
     if(error.status == 400){ 
      this.badRequest = true; 
     } 
    }); 

并在您的模板中使用结果。如果你真的想要去的*ngIf路线,你这样做:

<button *ngIf="badRequest" type="button" disabled>My Button</button> 
<button *ngIf="!badRequest" type="button">My Button</button> 

您将基本上必须编写两个按钮,都与*ngIf语句来得到你想要的结果。

如果你想使用[disabled]属性你可以这样做:

<button [disabled]="badRequest" type="button">My Button</button> 

不过,我不会,如果一个错误请求发生禁用的按钮,因为那样的话怎么会后用户正确填写其重新提交表单出来吗?例如,如果用户将必填字段留空,则服务器将返回一个BadRequest并禁用该按钮。然后,用户无法更正缺少的字段并重新提交表单。

我会做什么,而不是是基于表单的这样的有效性切换按钮的disabled属性:

<form (ngSubmit)="onSubmit()" #myForm="ngForm"> 

    ...inputs....  

    <button type="submit" class="btn btn-success" [disabled]="!myForm.valid">SUBMIT</button> 

</form> 

希望这有助于。

+0

谢谢。这不是一种形式,所以[禁用]完美无缺。 –

+0

太好了。很高兴它对你有效。对不起,我只是假设它是一种形式。 –

+0

只有当我点击它消失的按钮时,它仍然不能在页面加载中工作。我怎样才能让它听到页面加载?纯Javascript,还是? –