Вот мой массив 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;
}
}
}
Здесь, если я выберу первый элемент, последние два будут отключены.
Пожалуйста, помогите, как добиться этого или любой другой лучший способ сделать это.