Angular 如何进行调用,如果api返回错误404,将打开模式

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}

我首先尝试验证url是否正确。如果是,它将从url返回一个符号。如果它返回错误404,我希望它打开已经建立的模式,告诉用户该做什么

我用Angular来写代码。我不知道该怎么做

以下是我在sign-form.component.ts中看到的内容:

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;