Angular 如何在组件TS代码中使用API

Angular 如何在组件TS代码中使用API,angular,angular-material,Angular,Angular Material,在Angular Materials文档中,有一个API,它提供了与该组件相关的有用函数,例如 有没有办法在组件类型脚本代码中获取该对象?例如,在我的组件中,假设我想要收听selectChange事件。 我尝试了以下代码,但它说myOptionId不存在于myComponent类型上 .html <mat-selection-list> <mat-list-option *ngFor="let item of list" #myOptionID>

在Angular Materials文档中,有一个API,它提供了与该组件相关的有用函数,例如

有没有办法在组件类型脚本代码中获取该对象?例如,在我的组件中,假设我想要收听selectChange事件。 我尝试了以下代码,但它说myOptionId不存在于myComponent类型上

.html

  <mat-selection-list>
    <mat-list-option *ngFor="let item of list"  #myOptionID>
      {{item.id}}
    </mat-list-option>
  </mat-selection-list>
但我还想根据后端的逻辑更改所选选项,因此我想访问组件代码中的整个对象

// grab the MatListOption instances..
@ViewChildren(MatListOption) options: QueryList<MatListOption>;
A为您提供一个我可以抓取选项实例的地方,在代码中三秒钟后,我检查第三个菜单列表。我希望这能解决你的问题

请注意

<mat-list-option (selectChange)="onChange($event)" value="bananas">Bananas</mat-list-option>
香蕉 仍然不起作用,因为在当前的
2.0.0-beta.12上
你会发现他们从未调用过
。在
选择更改时发出
,它只是坐在那里无所事事

但正如在master分支上所看到的,它们已经将
selectChange
更改为
selectionChange
,它们实际上调用了
.emit
,因此它应该可以在master上工作

现在甚至不能使用
(selectChange)=“onChange($event)”
,因为这是一个bug。在主分支中,您会看到他们正在将此更改为
selectionChange
// grab the MatListOption instances..
@ViewChildren(MatListOption) options: QueryList<MatListOption>;
ngOnInit() {
    this.someService.getData(data => {
        // say you want to check the third one.
        this.options.toArray[2].selected = true;
    })
}
<mat-list-option (selectChange)="onChange($event)" value="bananas">Bananas</mat-list-option>