如何使用 material-ripple 来创建类似按钮的组件?
How can I use material-ripple to create a button-like component?
我想创建一个带有波纹动画的类似按钮的组件,它看起来像这样:
<div>Button</div>
<material-ripple></material-ripple>
在过去,这工作正常,因为当我点击这个自定义元素时,我实际上点击了 material-ripple
并且点击事件冒泡到宿主元素。
从 angular_components 0.5.1 开始,material-ripple
在按键时显示中心波纹。这与点击不同,因为事件目标是宿主元素本身而不是波纹组件。
有没有办法将按键事件传递给 material-ripple
,以便播放波纹动画?或者有没有办法以编程方式播放动画?
经过一些研究,我想出了一个使用 dart:html 的解决方案。
@ViewChild(MaterialRippleComponent, read: ElementRef)
ElementRef materialRipple;
@HostListener('keydown', const [r'$event'])
void passKeyDown(KeyboardEvent event) {
(materialRipple.nativeElement as HtmlElement).dispatchEvent(
new KeyEvent('keydown', keyCode: event.keyCode, canBubble: false)
.wrapped);
}
虽然由于 KeyEvent 和 KeyboardEvent 的一些错误,这在 Dartium 中不起作用,但它在 Chrome 中工作正常。
我想创建一个带有波纹动画的类似按钮的组件,它看起来像这样:
<div>Button</div>
<material-ripple></material-ripple>
在过去,这工作正常,因为当我点击这个自定义元素时,我实际上点击了 material-ripple
并且点击事件冒泡到宿主元素。
从 angular_components 0.5.1 开始,material-ripple
在按键时显示中心波纹。这与点击不同,因为事件目标是宿主元素本身而不是波纹组件。
有没有办法将按键事件传递给 material-ripple
,以便播放波纹动画?或者有没有办法以编程方式播放动画?
经过一些研究,我想出了一个使用 dart:html 的解决方案。
@ViewChild(MaterialRippleComponent, read: ElementRef)
ElementRef materialRipple;
@HostListener('keydown', const [r'$event'])
void passKeyDown(KeyboardEvent event) {
(materialRipple.nativeElement as HtmlElement).dispatchEvent(
new KeyEvent('keydown', keyCode: event.keyCode, canBubble: false)
.wrapped);
}
虽然由于 KeyEvent 和 KeyboardEvent 的一些错误,这在 Dartium 中不起作用,但它在 Chrome 中工作正常。