我想在组件完全呈现后更新其UI。因为它是在for中渲染元素,所以我的理解是,在与UI交互之前,我需要使用订阅来检查要首先创建的元素。
根据我阅读的示例,这是我想出的。但是,没有发生任何事情,因为我的订阅中的console.log语句从未触发。没有错误。好像我的订阅没有任何更改。我的逻辑上显然没有任何东西吗?
模板标记:
<ng-container *ngFor="let item of items; let i = index;">
<input *ngIf="..." #inputItem>
角度(5):
@ViewChildren('inputItem', {read: ViewContainerRef }) inputItems: QueryList<ViewContainerRef>;
ngAfterViewInit(): any {
this.inputItems.changes.subscribe(() => {
console.log('items created');
});
}
答案 0 :(得分:1)
对我来说,做了一些小的改动,效果很好。这就是我最终得到的:
模板
<tr *ngFor='let product of filteredProducts' >
<input *ngIf='product.imageUrl' #inputItem type='text'>
组件
import { Component, OnInit, ViewChildren,
QueryList, AfterViewInit, ElementRef } from '@angular/core';
@ViewChildren('inputItem') inputItems: QueryList<ElementRef>
ngAfterViewInit(): void {
this.inputItems.changes.subscribe(value => {
console.log(value);
this.inputItems.map((item => item.nativeElement.style.backgroundColor = 'red') )
}
);
}