后端错误没有立即显示Angular



当用户试图在数据库中搜索患者时,我试图在消息框中显示后端错误。当我收到错误(没有发现患者错误(时,消息正文会立即出现,但除非单击两次搜索按钮,否则消息本身不会显示。

这是后端

router.get('/', async (req, res) => {


const filter = handleQueryFilter(req.query.filter)
const sort = handleQuerySort(req.query.sort)
const dataDisplayed = handleQueryProjection(req.query.data)

let patients = await Patient.find(filter,dataDisplayed).sort(sort);
return Object.entries(patients).length === 0 ? res.status(404).json(`Sory we could not find what you are looking for`) : res.json(patients)

})

html:

<div class="message" *ngIf="errorNoResultPage">
<div class="msgBody">
<i *ngIf="errorNoResultPage"  class='bx bx-tired'></i>
<p *ngIf="errorNoResultPage" >{{message}}</p>
</div>
</div>

ts:

onSearch(search:any){
let p = this.patientList.filter(p=>p.name.toLocaleLowerCase() == this.searchVlaue.toLocaleLowerCase())
this.errorNoResult(p)
}
errorNoResult(patient:any){
if(patient=== undefined){
this.errorNoResultPage= true
}
else{
if(Object(patient).length <=0){ 
this.patientList=[]; 
this.errorNoResultPage=true
this.PatientService.getPatients().subscribe(res=> console.log(res),err => {
console.log(err);
this.message = err; 
});
}
else{
this.errorNoResultPage = false
}
}

这是我的服务文件:

getPatients(): Observable<Patient[]> {

this.showNoResult = false
var filterPram = this.activatedRoute.snapshot.queryParams['filter'] ;
var sortPram =  this.activatedRoute.snapshot.queryParams['sort'];
var queryParams:  Params = {sort:sortPram ,filter:filterPram };
console.log(queryParams);
return this.http.get<Patient[]>(`${this.dataUri}`,
{
params:
queryParams
}).pipe(catchError(this.handleError))
}

编辑:当我控制台记录错误时,它会立即出现。

我弄清楚我的代码有什么问题。

在服务文件中,我正在寻找查询参数来进行筛选和排序。

因此,在ts中,在检查服务文件返回的任何错误之前,我必须设置查询参数。

我刚刚在路由器导航中添加了.then(()=>this.errorNoResult(p)),如下所示:

this._router.navigate(['/dashboard','patients'],{queryParams:{
filter : this.queryParams,
sort:sortPram
}} ).then(()=>this.errorNoResult(p))

最新更新