如何使用 Angular *ngIf 监听 400(错误请求)?
How to listen the 400 (Bad Request) with Angular *ngIf?
我不会粘贴任何代码,因为这是一个一般性问题。如果什么都没有,我需要弄清楚如何倾听 returns。我无法得到任何对象,因为什么都不存在。我只收到 GET
请求消息“400 (Bad Request)
”。(控制台)。
如果有“400 (Bad Request)
”(不存在),如何禁用按钮?
有没有办法在前端收听这个?
谢谢
在 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,我不会禁用按钮,因为那样用户在正确填写表单后将如何重新提交表单?例如,如果用户将必填字段留空,服务器 returns 一个 BadRequest 并禁用该按钮。然后用户无法更正缺失的字段并重新提交表单。
我要做的是根据表单的有效性切换按钮的 disabled
属性,如下所示:
<form (ngSubmit)="onSubmit()" #myForm="ngForm">
...inputs....
<button type="submit" class="btn btn-success" [disabled]="!myForm.valid">SUBMIT</button>
</form>
希望这对您有所帮助。
我不会粘贴任何代码,因为这是一个一般性问题。如果什么都没有,我需要弄清楚如何倾听 returns。我无法得到任何对象,因为什么都不存在。我只收到 GET
请求消息“400 (Bad Request)
”。(控制台)。
如果有“400 (Bad Request)
”(不存在),如何禁用按钮?
有没有办法在前端收听这个?
谢谢
在 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,我不会禁用按钮,因为那样用户在正确填写表单后将如何重新提交表单?例如,如果用户将必填字段留空,服务器 returns 一个 BadRequest 并禁用该按钮。然后用户无法更正缺失的字段并重新提交表单。
我要做的是根据表单的有效性切换按钮的 disabled
属性,如下所示:
<form (ngSubmit)="onSubmit()" #myForm="ngForm">
...inputs....
<button type="submit" class="btn btn-success" [disabled]="!myForm.valid">SUBMIT</button>
</form>
希望这对您有所帮助。