Я пытаюсь mdc-components с проектом angular4, созданным с использованием angular-cli
. Итак, я установил по расписанию с помощью команды npm
npm install material-components-web
это установлено
"material-components-web": "^0.22.0"
Затем создал компонент, содержащий HTML-разметку слайдера.
<div #slider class="mdc-slider" tabindex="0" role="slider" aria-valuemin="0" aria-valuemax="100" aria-valuenow="0" aria-label="Select Value">
<div class="mdc-slider__track-container">
<div class="mdc-slider__track"></div>
</div>
<div class="mdc-slider__thumb-container">
<svg class="mdc-slider__thumb" width="21" height="21">
<circle cx="10.5" cy="10.5" r="7.875"></circle>
</svg>
<div class="mdc-slider__focus-ring"></div>
</div>
</div>
На стороне ts получить элемент с помощью ViewChild
@ViewChild('slider') elSlider: ElementRef;
и обернул этот элемент, используя класс MDCSlider
let mdcSlider = new MDCSlider(this.elSlider.nativeElement);
а затем импортировал файл sass для того же компонента mdc в styles.scss
файле
@import '~@material/slider/mdc-slider';
это отрендерило красивый компонент слайдера материала в пользовательском интерфейсе, и он отлично работает.
Чтобы прослушать событие изменения
mdcSlider.listen('MDCSlider:change', () => console.log("Value changed to ",mdcSlider.value));
и это регистрирует текущее значение ползунка в консоли браузера.
Но меня смущают классы основы и адаптера каждого компонента.
Из документа я получил
фундаментальный класс предназначен для взаимодействия с элементом dom, и по имени взаимодействия я могу
1) слушать события
2) получить / установить текущее значение компонента
и я могу передать свой собственный адаптер базовому классу.
У меня есть вопросы по этому поводу
1) Чтобы использовать компонент каждый раз, мне нужно использовать базовый класс? с кастомной реализацией адаптера?
2) Любой сценарий или пример, показывающий использование фундамента и адаптера, за исключением примера флажка angular2?
3) Используется ли базовый класс, если мне нужно создать собственный угловой компонент?