3

Привет, в общем хочу сделать следующее, есть 2 группы баттонов(angular material "md-radio-button"), если какое-то из значений первой группы совпадает с любым из второй, сделать баттон неактивным и добавить какой-то текст. К примеру в 1 группе есть :

-Москва -СПБ -Воронеж

Во второй есть:

-Краснодар -Чебаркуль -Воронеж

Тогда в 1 группе сделать баттон Воронеж неактивным и добавить текст. Здесь код: https://plnkr.co/edit/3QdQtu4kWCQjL5uO2kJt?p=preview

Мои мысли ведут меня в сторону - [disabled] = "selectedcountry === selectedcopycountry", такой же *ngIf c текстом к баттону, но ведь тогда считаются значения только с выбранного ... В общем прошу помощи

mymedia
  • 8,602
shoopik
  • 63

1 Answers1

2

Должно было быть что-то такое

[disabled]="countries.includes(country)"

но т. к. там лежат объекты, то функцию для поиска надо вынести в компонент

hasCountry(country) {
  return this.countries && this.countries.some(c => c.name === country.name);
}

и вызывать её

[disabled]="hasCountry(country)"

https://plnkr.co/edit/ufz70Kx89YtWLglFPfck?p=preview

Qwertiy
  • 123,725
  • Спасибо большое, а можете объяснить как именно работает функция this.countries.some(c => c.name === country.name); и как добавить текст рядом к disabled button? – shoopik Aug 17 '17 at 17:02
  • 1
    Проходит в цикле по массиву и на первом совпадении делает return true. – Qwertiy Aug 17 '17 at 17:20