使用input加ul实现模糊输入(后台返回搜索结果,基于angular ts)

效果图
在这里插入图片描述
需要后台配合,写一个查询,前端监听输入框每次的输入,同时把输入的值当作参数请求后台,后台把查询的结果返回来,然后显示在ul里,然后点击li获取li里的值,替换input的值

html

<div *ngIf="key?.config_info.columntype==9">
                    <label for="name">{{key?.config_info.columntitle}}</label>
                    <input style="width: 60%;" type="text" id="name" [name]="key?.config_info.columntitle"
                        [(ngModel)]="key?.config_info.result" [placeholder]="'请输入'+key?.config_info.columntitle"
                        (ngModelChange)="getChange(key?.config_info.result)">
                    <ul id="chooseSchool" *ngIf="schoolList">
                        <li *ngFor="let xuexiao of schoolList;index as xuexiaoINDEX" class="ellipsis" (click)="chooseSchool($event,idx,i)">{{xuexiao.name}}</li>
                    </ul>
                </div>

ts

// 输入框值改变请求符合的学校
  getChange(text){
    let params={
      name:text
    }
    if(text==""){
      this.schoolList=null;
      return;
    }
    this.getSchoolFun(params).then((res)=>{
      
      if(res['data'].length>10){
        res['data']=res['data'].slice(0,10)
      }
      else if(res['data'].length==0){
        res['data']=null
      }
      this.schoolList=res['data']
      console.log(res['data'],this.schoolList,1)
    })
  }
   // 获取学校列表请求
   getSchoolFun(params) {
    return (new Promise(resolve => {
      this.request.apiGet(this.api.getSchool, params).subscribe((result) => {
        resolve(result)
      })
    }))
  }
  // 点击学校并选择
  chooseSchool(e,idx,i){
    console.log(e.target.innerHTML,this.formInfo[idx])
    this.formInfo[idx]["list"][0][i].config_info.result=e.target.innerHTML
    this.schoolList=null
  }

猜你喜欢

转载自blog.csdn.net/qq_42944436/article/details/107250073
ts