Нестандартная труба в угловых 5 не работает - PullRequest
0 голосов
/ 07 июня 2018

Вот мой массив emp объекта:

emp[
    {"id":1001,"name":"robin_delhi"},
    {"id":1002,"name":"robin_mumbai"},
    {"id":1003,"name":"robin_bang"},
    {"id":1004,"name":"sushil_delhi"},
    {"id":1005,"name":"sushil_mumbai"},
]

Вот мой HTML-шаблон, я показываю emp объект в раскрывающемся списке выбора компонента углового материала:

<mat-form-field>
    <mat-select [(ngModel)]="emp" [(value)]="sel" placeholder="Employee
        [formControl]="toppings" multiple required>
        <mat-option  *ngFor="let p of emp | proDisable:emp:sel; let p = index;" [value]="p">
            {{p.name}}
        </mat-option>
    </mat-select>
</mat-form-field>

Я хочу, чтобы при выборе определенного имени emp оно совпадало с оставшимся элементом (первая часть специального символа «_»), если совпадение найдено, оно будет отображаться как обычно, иначе отключено.

Вот мой пользовательский канал:

import { Pipe, PipeTransform } from '@angular/core';

@Pipe({
  name: 'proDisable'
})

export class ProDisablePipe implements PipeTransform {    
    transform(value:any, data:any, sel:any) : any {
        if(!sel)
        {
            return value;
        }
        else
        {
            let nval:any;

            for(var i=0; i<data.length; i++) 
            {
                for(var j=0; j<sel.length; j++)
                {
                    if ((i['name'].substring(0, i['name'].indexOf("_")))==(sel['name'].substring(0, sel['name'].indexOf("_"))))
                    {
                        nval= "class='disable'"+value;
                    }
                    else 
                    {
                        nval= "class='enable'"+value;
                    }
                } 
            }

            return nval;
        }
    }
}

Здесь, если я выберу первый элемент, последние два будут отключены.

Пожалуйста, помогите, как добиться этого или любой другой лучший способ сделать это.

...