Angular6 @ViewChildren使用标识符

时间:2018-12-16 11:03:39

标签: angular

我创建了一个使用选定的 pyb-button-group 的指令,该指令使用@ViewChildren,声明如下:

@ViewChildren('header', { read: ElementRef }) headers: QueryList<ElementRef>

我的html模板看起来像这样:

<div class="container" *ngIf="categories">
  <div class="row" pyb-button-group>
    <div class="col-md-4 col-6" *ngFor="let category of categories">
      <a class="btn-choice" [routerLink]="['/' + category.id]">
        <div class="header" #header>
          <span class="title">{{ category.name }}</span>
        </div>
      </a>
    </div>
  </div>
</div>

因此,我有一种使用ngAfterViewInit触发的方法,如下所示:

ngAfterViewInit() {
  console.log(this.headers);
}

并返回undefined ....

我做错什么了吗?

2 个答案:

答案 0 :(得分:1)

应该是这样的:

B

DEMO

答案 1 :(得分:0)

它也可以与ViewChildern一起使用,

export class AppComponent {

  @ViewChildren('header', { read: ElementRef }) headers: QueryList<ElementRef>
  categories: {
    name: string
  }[] = [];

  ngOnInit() {
    this.categories = [];
    this.categories.push({ name: "Test" }, { name: "Test2" });
  }

  ngAfterViewInit() {
    console.log(this.headers);
    this.headers.toArray().forEach(header => console.log(header));
  }
}

这是一个工作样本, https://stackblitz.com/edit/angular-jdkdro