我知道这个线程已有 7 个月的历史,并且 OP 可能早已超越了这个问题,但由于该功能尚未添加到 ionic 框架中,我正在添加我想出的解决方法以供其他人参考。
CSS 部分
直观地说,您需要做的第一件事是添加一些 sass/css 来隐藏不需要的按钮。我通过selectOptions
为我的ion-select
元素传递一个 css 类“remove-ok”来做到这一点。(我只是删除了确定按钮,但如果有人也需要删除取消按钮,那是一个简单的 css 修改)。
在组件中:
this.selectOptions = {
cssClass: 'remove-ok'
};
在 HTML 中:
<ion-select [selectOptions]="selectOptions">
并app.scss
添加:
.remove-ok {
.alert-button:nth-child(2) {
display: none;
}
}
脚本部分
现在 OK 按钮已隐藏,您需要以某种方式关闭警报视图。
在隐藏的 OK 按钮上调用click()
事件是简单直观的,但您很快就会发现,虽然它在 上完美运行ionic serve
,但在实际的 iOS 设备上却无法运行。
解决方案是找到对警报视图的引用,将选中的选项传递给选择处理程序,最后关闭视图。
所以在ngOnInit
你的组件类中,你需要这个:
ngOnInit() {
let root = this.viewController.instance.navCtrl._app._appRoot;
document.addEventListener('click', function(event){
let btn = <HTMLLIElement> document.querySelector('.remove-ok .alert-button-default:nth-child(2)');
let target = <HTMLElement> event.target;
if(btn && target.className == 'alert-radio-label')
{
let view = root._overlayPortal._views[0];
let inputs = view.instance.d.inputs;
for(let input of inputs) {
if(input.checked) {
view.instance.d.buttons[1].handler([input.value]);
view.dismiss();
break;
}
}
}
});
}
同样,如果您还打算删除取消按钮,请注意此代码中的 css 引用。