Давайте посмотрим:ViewChild это определено во время события изменения размера
import {
Component, OnInit, ViewEncapsulation, Input, ElementRef, ViewChild, AfterViewInit
} from '@angular/core';
@Component({
selector: 'app-sidebar',
template: `
<aside #sidebar>
Sidebar
</aside>`,
})
export class AppSidebar implements OnInit, AfterViewInit {
@ViewChild('sidebar')
private sidebar: ElementRef;
constructor() {
}
ngOnInit() {
console.log('OnInit has:', this.sidebar)
window.addEventListener('resize', this.resetSidebar);
}
ngAfterViewInit() {
console.log('AfterViewInit has:', this.sidebar);
}
resetSidebar() {
console.log(this.sidebar);
}
}
this.sidebar
летуч здесь. Он выводится правильно во время перехвата жизненного цикла, но при изменении размера окна он становится нулевым. Нет camelCase problem, нет conditional dom, так что случилось с кодом?
Я предполагаю, что 'resize' обжигают уже до' sidebar' установлен. Вы подписываетесь в 'ngOnInit()', но 'sidebar' будет доступен только в более позднем' ngAfterViewInit() ' –
. Это, похоже, не имеет значения. Когда я подписываюсь в 'ngAfterViewInit' или даже в' ngAfterContentInit' - результат тот же. – user776686