Расширьте MatOption, чтобы создать выбор/отмену выбора всего компонента

Мне нужно создать общий компонент для выбора/отмены выбора всех элементов mat-select, потому что у меня есть приложение, которое использует его много раз и часто выполняет одну и ту же часть работы. это не вариант.

Я читал много вариантов, таких как этот вопрос, и я решите создать компонент, как предлагает один из ответов (посмотрите https://stackblitz.com/edit/angular-select-all-option)

Проблема в том, что с angular v10 это не работает. Если я нажму кнопку «Выбрать все», это не сработает, но если я нажму на какую-то опцию, а затем нажму «Выбрать все», это сработает, но не работает должным образом. Код здесь:

https://stackblitz.com/edit/select-all-option

Основное различие между проектами Ivy compiler. Без Айви это работает.

Можно ли добиться этого с помощью Ivy compiler? заранее спасибо


person Aw3same    schedule 26.08.2020    source источник


Ответы (1)


Это как-то связано с тем, как Ivy обрабатывает наследование слушателей. _selectViaInteraction уже вызывается внутри компонента MatOption, так как он также содержит click прослушиватель хоста.

Попробуйте удалить this._selectViaInteraction(); в select-all-option.component.ts в строке 23.

https://stackblitz.com/edit/select-all-option-dmcb4h?file=src/app/select-all-option/select-all-option.component.ts

person 0x6368656174    schedule 26.08.2020