【问题标题】:How to programmatically trigger all mat-ripples?如何以编程方式触发所有垫波纹?
【发布时间】:2019-02-27 15:17:43
【问题描述】:
【问题讨论】:
标签:
angular
angular-material
angular7
【解决方案1】:
您可以使用ViewChildren 和QueryList 来查询特定类型的组件中的所有元素。然后,您可以遍历它们并在集合中的所有或任何项目上调用 launch(或您需要的任何其他内容)。
工作stackblitz
list-overview-example.ts
import {Component, ViewChildren, QueryList} from '@angular/core';
import {MatRipple} from '@angular/material';
@Component({
selector: 'list-overview-example',
templateUrl: 'list-overview-example.html',
styleUrls: ['list-overview-example.css'],
})
export class ListOverviewExample {
@ViewChildren(MatRipple)
ripple: QueryList<MatRipple>;
triggerRipple() {
this.ripple.forEach(_ => _.launch({centered: true}));
}
}
list-overview-example.html
<mat-list role="list">
<mat-list-item matRipple role="listitem">Item 1</mat-list-item>
<mat-list-item matRipple role="listitem">Item 2</mat-list-item>
<mat-list-item matRipple role="listitem">Item 3</mat-list-item>
</mat-list>
<button mat-raised-button color="accent" (click)="triggerRipple()">Trigger Ripple</button>