如何在 NativeScript Angular 中 disable/enable 没有 actionView 的 actionItem?
How to disable/enable an actionItem without an actionView in NativeScript Angular?
我有一个 ActionItem:
<ActionItem #finishActionItem text="Finish" ios.position="right" android.position="actionBar" (tap)="handleFinish()"></ActionItem>
如何disable/enable actionItem?我知道这在本地很容易做到,但似乎无法弄清楚如何在 NativeScript angular.
我尝试过使用 actionView,但 actionView 仅适用于 actionItem 中的某种类型的视图。我不想要 actionItem 中的标签,因为这要求我必须自己设计它的样式。
我该如何解决这个问题?
NativeScript 不支持,但您仍然可以使用一些本机代码来实现。
在构造函数中注入Page
import { Page } from "tns-core-modules/ui/page";
...
constructor(private page: Page) { }
要在您的代码中禁用 finishActionItem
,
if (this.page.actionBar.android) {
const menu = this.page.actionBar.nativeView.getMenu();
menu.findItem(this.finishActionItem.nativeElement._getItemId()).setEnabled(false);
} else {
const navigationItem = this.page.ios.navigationItem,
barButtonItems = this.finishActionItem.nativeElement.ios.position === "left" ? navigationItem.leftBarButtonItems : navigationItem.rightBarButtonItems;
let barButtonItem;
for (const item of barButtonItems) {
if (item.accessibilityLabel === this.finishActionItem.nativeElement.text) {
barButtonItem = item;
break;
}
}
if (barButtonItem) {
barButtonItem.enabled = false;
}
}
我有一个 ActionItem:
<ActionItem #finishActionItem text="Finish" ios.position="right" android.position="actionBar" (tap)="handleFinish()"></ActionItem>
如何disable/enable actionItem?我知道这在本地很容易做到,但似乎无法弄清楚如何在 NativeScript angular.
我尝试过使用 actionView,但 actionView 仅适用于 actionItem 中的某种类型的视图。我不想要 actionItem 中的标签,因为这要求我必须自己设计它的样式。
我该如何解决这个问题?
NativeScript 不支持,但您仍然可以使用一些本机代码来实现。
在构造函数中注入Page
import { Page } from "tns-core-modules/ui/page";
...
constructor(private page: Page) { }
要在您的代码中禁用 finishActionItem
,
if (this.page.actionBar.android) {
const menu = this.page.actionBar.nativeView.getMenu();
menu.findItem(this.finishActionItem.nativeElement._getItemId()).setEnabled(false);
} else {
const navigationItem = this.page.ios.navigationItem,
barButtonItems = this.finishActionItem.nativeElement.ios.position === "left" ? navigationItem.leftBarButtonItems : navigationItem.rightBarButtonItems;
let barButtonItem;
for (const item of barButtonItems) {
if (item.accessibilityLabel === this.finishActionItem.nativeElement.text) {
barButtonItem = item;
break;
}
}
if (barButtonItem) {
barButtonItem.enabled = false;
}
}