Среда
Требование
Нам нужно сфокусировать первый (или определенный c) элемент, когда пользователь переходит к шагу. Каждый шаг будет иметь свои собственные различные элементы (вход, кнопка, выпадающий список и т. Д. c), которые должны получить автофокусировку, чтобы пользователю не приходилось вручную нажимать один из них для запуска потока.
Код пробовал
- Использовать тег
autofocus
для элементов. Это не работает отдельно от 1-го элемента, как в случае с мастером, весь набор шагов представляет собой один DOM. Используйте событие ngOnViewEdit и ViewChild для нужного элемента в компоненте каждого шага, чтобы установить фокус
ngOnViewEdit () {var emailElement = (this.email.nativeElement); if (emailElement) {emailElement.focus (); } else alert ("Элемент электронной почты не найден"); } Это также не работает как-то. Также пытался обернуть тело метода вызовом setTimeout
с таймаутом от 0 до 1000.
В мастере stepEnter
попытаться получить доступ к ViewChild и выполнить попытку фокусировки. Это также не сработало
UI компонента
`<aw-wizard-step (stepEnter)="setFocus()">
<app-cost-impact></app-cost-impact>
</aw-wizard-step>`
Компонент TS
setFocus() {
var emailComponent = <AddEmailComponent><unknown>this.wizard.currentStep;
var emailElement = (<HTMLInputElement>emailComponent.email.nativeElement);
if (emailElement) {
emailElement.focus();
} else
alert("Email element not found");
}
Challange
Нам нужно найти какой-то способ доступа к элементам для каждого шага и сделать его достаточно c, достаточным для обработки всех шагов