Фильтровать несколько столбцов из нескольких таблиц в angular - PullRequest
0 голосов
/ 24 апреля 2020

Я хочу создать пользовательский фильтр для моей таблицы, который принимает более одного аргумента для поиска в нескольких столбцах из нескольких таблиц. У меня есть 2 таблицы со свойствами компании, связанной по id. Я пытаюсь объединить их, чтобы отфильтровать по «имени» и «адресу», которые находятся в первой таблице и во второй таблице.

В cs

    public IHttpActionResult Get()
    {
        string SearchString = "";
        try
        {
            using (var db = new BD_Avizare_IPEntities1())
            {
                db.Configuration.LazyLoadingEnabled = false;
                db.Configuration.ProxyCreationEnabled = false;
                var data = from Obiectiv1 m in db.Obiectiv1
                           join AvizSI1 mx in db.AvizSI1
                           on m.id equals mx.id_obiectiv
                           select new {m,mx};
       var z = data.ToList();

                return Ok(z);}

Во внешнем интерфейсе у меня есть это:

list-company. html

 <tr *ngFor="let firme of listaFirme | namefilter: numeFirma:numeJudet:numeIncadrare">
    <td>{{firme.m.numeCompanie}}</td>



    <td><button class="btn btn-danger" (click)="onDelete(firme.m.id,stergeForm,$event)"  value="{{firme.m.id}}">Sterge</button></td>
    <td><button class="btn btn-info" (click)="onEdit(firme.m.id)"  value="{{firme.m.id}}">Editeaza</button></td>

</tr>

Здесь я использовал для отображения данных из первой таблицы

<tr *ngFor="let firme of listaFirme | namefilter: numeFirma:numeJudet:numeIncadrare"> <td>{{firme.m.numeCompanie}}</td>

где это m от бэкэнда.

name-filter.pipe.ts

 transform(listaFirme:cereri[],numeFirma:string,numeJudet:string,numeIncadrare:string)
{
    if (listaFirme && listaFirme.length){

        return listaFirme.filter(item =>{

            if (numeFirma && item.numeCompanie.toLowerCase().indexOf(numeFirma.toLowerCase()) === -1){
                return false;
            }

            if (numeJudet && item.judet.toLowerCase().indexOf(numeJudet.toLowerCase()) === -1){
                return false;
            }

            if ((numeIncadrare && item.incadrare_HGR571.toLowerCase().indexOf(numeIncadrare.toLowerCase()) === -1) ){
                return false;
            }

            return true;
       })
    }
    else{
        return listaFirme;
    }
}

Здесь, на канале, я не могу использовать

item.m.numeCompan ie

или item.mx.incadrareHGR, и если я разрешаю без m или mx в браузере, я получаю «не могу прочитать о неопределенных», очевидно.

Как Могу ли я сделать это по-другому?

...