У меня есть родительский компонент, в котором есть несколько компонентов:
<div class="mx-sm-auto mb-5 px-0 container">
<app-set-vehicle-details id="step1" #step1 (step1Finished)="enableStep2()"></app-set-vehicle-details>
<app-product-selection id="step2" *ngIf="step2Enabled"></app-product-selection>
<app-product-additional id="step3" *ngIf="step3Enabled"></app-product-additional>
</div>
Все дочерние элементы испускают finished
, как только они разблокированы, и вы можете перейти к следующему шагу. Таким образом, вы включаете следующий шаг следующим образом:
step2Enabled = false;
enableStep2() {
this.step2Enabled = true;
this.scrollToElement('step2');
}
scrollToElement(id: string): void {
const element = document.querySelector('#' + id);
if (element) {
element.scrollIntoView({behavior: 'smooth', block: 'start', inline: 'nearest'});
}
}
Таким образом, step2
компонент становится видимым, но выделите его, он не работает. Я предполагаю, что это происходит потому, что видимость второго компонента не была истинной до вызова scrollToElement
, потому что он работает, когда компонент виден.
Как я могу заставить это поведение работать?
Спасибо!