Material Design Slide Toggle没有event.StopPropagation,我应该使用什么?

问题描述 投票:3回答:1

Material Design中的Slide Toggle没有stopPropagation事件,因为“MdSlideToggle.prototype._onChangeEvent”已经调用了stopPropagation。相反,我应该使用什么?

<md-slide-toggle (change)="changeToggle($event, activityType.isActive)" checked="activityType.isActive" value="activityType.activityTypeId" mdTooltip="{{!!activityType.isActive ? 'Active' : 'Inactive'}}" mdTooltipPosition="left"></md-slide-toggle>


public changeToggle(event: MdSlideToggleChange, originalValue){
    if (this.hasChange && event.checked !== originalValue){
        event.stopPropagation();
        //Results in error: [ts] Property 'stopPropagation' does not exist on type 'MdSlideToggleChange'.
    } else {
        this.hasChange = !this.hasChange;
    }
}

我可以使用常规事件,但是会出现“event.stopPropagation不是函数”的异常。

目前,我正在将该行更改为:

event.source.checked = !event.checked;

event.preventDefault也是如此。我需要用户在更改页面上的其他值之前保存更改,因为“业务需求”。

只是将“已检查”的值改回原来的样子,正确的做法是什么?有一个更好的方法吗?

javascript jquery html angular material-design
1个回答
1
投票

“在更改页面上的其他值之前,我需要用户保存更改”

我知道这不是主题,但这与您的“业务要求”有关如果您说用户必须按一个单独的按钮才能确认mat-slide-toggle的值,那么您不应该使用垫子-slide拨动。你应该使用一个复选框。

mat-slide-toggles适用于一次性操作,打开或关闭灯,而不是询问您是否要打开或关闭灯。这是一个动作,而不是一个问题。

复选框更适合问题。

© www.soinside.com 2019 - 2024. All rights reserved.