Angular 如何进行调用,如果api返回错误404,将打开模式
我首先尝试验证url是否正确。如果是,它将从url返回一个符号。如果它返回错误404,我希望它打开已经建立的模式,告诉用户该做什么 我用Angular来写代码。我不知道该怎么做 以下是我在sign-form.component.ts中看到的内容:Angular 如何进行调用,如果api返回错误404,将打开模式,angular,modal-dialog,Angular,Modal Dialog,我首先尝试验证url是否正确。如果是,它将从url返回一个符号。如果它返回错误404,我希望它打开已经建立的模式,告诉用户该做什么 我用Angular来写代码。我不知道该怎么做 以下是我在sign-form.component.ts中看到的内容: import {Sign} from '../sign'; import {environment} from './../../environments/environment'; import {ActivatedRoute, ParamMap}
import {Sign} from '../sign';
import {environment} from './../../environments/environment';
import {ActivatedRoute, ParamMap} from '@angular/router';
import {PalModal} from '@pallet/angular';
@Component({
selector: 'app-sign-form',
templateUrl: './sign-form.component.html',
styleUrls: ['./sign-form.component.scss']
})
export class SignFormComponent implements OnInit {
constructor(private route: ActivatedRoute) {
this.getStoreNumber();
}
submitted = false;
model = new Sign('', '');
@ViewChild('modalId', {static: false}) myModal: PalModal;
ngOnInit() {
}
getStoreNumber() {
this.route.queryParamMap.subscribe(
(params: ParamMap) => {
this.model.store = params.get('store');
}
)
}
getSign() {
this.submitted = true;
const sign = this.model;
this.myModal.open();
const STORE_REGEXP = /^-?\d{3,4}$/;
const PRODUCTID_REGEXP = /^[-0-9a-zA-Z]+$/;
if (!sign.store
|| !sign.productId
|| !STORE_REGEXP.test( sign.store )
|| !PRODUCTID_REGEXP.test( sign.productId )) {
return;
}
const store = sign.store.length === 3 ? '0' + sign.store : sign.store;
let productId = sign.productId.toUpperCase();
const SKU_REGEXP = /^[-0-9]+$/;
let productType;
if (SKU_REGEXP.test( productId )) {
productType = 'sku';
productId = productId.split( '-' ).join( '' );
} else {
productType = 'model';
}
const url = environment.digitalSignageServiceUri + '/ESL/pdf/store/' + store + '/' + productType + '/' + productId;
window.open(url, '', '');
}
onClick() {
this.myModal.close();
}
}
您可以使用截取请求并打开模式
intercept(request: HttpRequest<any>, next: HttpHandler): Observable<HttpEvent<any>> {
return next.handle(request).pipe(
tap(
() => { },
(error: any) => {
if (error instanceof HttpErrorResponse) {
if (error.status === 404) {
//open modal
}
}
}
)
);
}
intercept(请求:HttpRequest,下一步:HttpHandler):可观察{
返回next.handle(request.pipe)(
水龙头(
() => { },
(错误:any)=>{
if(HttpErrorResponse的错误实例){
如果(error.status==404){
//开放模态
}
}
}
)
);
}
如果http status==200,我还需要它打开windows.open;