如何在 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;
                }
            }