Угловой 6 - Для цикла на getElementsByClassName.Ошибка: тип 'HTMLCollectionOf <Element>' не является типом массива или типом строки - PullRequest
0 голосов
/ 27 октября 2018

Вчера я написал код, который работал нормально и не выводил ошибок, сегодня я не смог скомпилировать его, так как ошибка говорила: «Тип 'HTMLCollectionOf' не является типом массива или типом строки."

public myClassCollection: HTMLCollectionOf<Element> = document.getElementsByClassName('myClass');

//I added ": HTMLCollectionOf<Element>" part as I saw it seemed to work with NodeList

ngOnInit() {
    this.onChange();
    console.log(this.page);
}

@HostListener('window:resize') onResize() {
    this.onChange();
}

public onChange() {

    if (window.innerWidth <= 992) {

        for (const pageItem of this.myClassCollection) {
            pageItem.classList.add('hide');
        }

    } else {
        for (const pageItem of this.myClassCollection) {
            pageItem.classList.remove('hide');
        }
    }
}

Если я прокомментирую эти строки, скомпилирую, а затем добавлю их, это неожиданно сработает (с ошибкой, но все работает как надо). Странно, как я оставил это работать ...


Благодаря this Я заметил, что код начинает работать, когда я добавляю перед this.myClassCollection, вот так

for (const pageItem of this.myClassCollection) {
            pageItem.classList.remove('hide');
        }

но я до сих пор не понимаю, почему это сработало раньше? Ничего не изменилось

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...