Вам вообще не нужно использовать сеттер ViewChild
. Просто создайте простую функцию с именем setColumns
, которая обновляет columns
в HTML. Используйте событие window:resize
в HTML для вызова этой функции, а также вызовите ее в ngOnInit
, чтобы изменить ее размер при загрузке.
@ViewChild('box', {static: true}) box: ElementRef;
ngOnInit() {
this.setColumns();
}
setColumns() {
this.columns = Math.floor(this.box.nativeElement.clientWidth / 100);
}
В шаблоне просто вызовите setColumns
для window:resize
.
<mat-grid-list [cols]="columns" (window:resize)="setColumns()" rowHeight="100px" width="100%">
Вот рабочий пример для StackBlitz .