角度变化。订阅不触发

时间:2018-07-26 17:53:50

标签: angular angular2-observables

我想在组件完全呈现后更新其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');
    });
}

1 个答案:

答案 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') )
    }
    );
  }