【问题标题】:How to programmatically trigger all mat-ripples?如何以编程方式触发所有垫波纹?
【发布时间】:2019-02-27 15:17:43
【问题描述】:

所以,我发现了如何以编程方式触发一种涟漪效果,但是如何触发模板中存在的所有 mat-ripples?

我在这里找到了如何为一个人执行此操作(使用方便的 stackblitz):https://stackoverflow.com/a/52959049/2362818

谢谢。

【问题讨论】:

标签: angular angular-material angular7


【解决方案1】:

您可以使用ViewChildrenQueryList 来查询特定类型的组件中的所有元素。然后,您可以遍历它们并在集合中的所有或任何项目上调用 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>

【讨论】:

  • 工作得很好。谢谢!
猜你喜欢
  • 1970-01-01
  • 2020-06-22
  • 1970-01-01
  • 2015-05-17
  • 2017-01-14
  • 1970-01-01
  • 2012-02-02
  • 2017-07-15
  • 2014-04-22
相关资源
最近更新 更多