如何制作NativeScript交换机组件&x2019;s状态(开/关)在基于用户交互的页面/应用程序导航之间保持?

如何制作NativeScript交换机组件&x2019;s状态(开/关)在基于用户交互的页面/应用程序导航之间保持?,nativescript,nativescript-angular,Nativescript,Nativescript Angular,我的问题: 目前,我正在摆弄一个开关组件。 我的目标是能够单击“打开”开关组件,并在导航回主页或其他页面时使其保持“打开”状态 尝试的解决方案和实验: 我向NativeScript开关组件“内置”的本机(checkedChanged)事件附加了一个方法。 通过内置(checkedChanged)事件,来自开关的事件数据将单击。 然后,brute强制开关组件的“checked”属性在第一次用户单击时在两个单独的测试用例中永久为TRUE或FALSE,而不考虑后续的单击……但每当我离开页面时,相关开关

我的问题: 目前,我正在摆弄一个开关组件。 我的目标是能够单击“打开”开关组件,并在导航回主页或其他页面时使其保持“打开”状态

尝试的解决方案和实验: 我向NativeScript开关组件“内置”的本机(checkedChanged)事件附加了一个方法。 通过内置(checkedChanged)事件,来自开关的事件数据将单击。 然后,brute强制开关组件的“checked”属性在第一次用户单击时在两个单独的测试用例中永久为TRUE或FALSE,而不考虑后续的单击……但每当我离开页面时,相关开关就会重置。我知道这一点,因为我的标志/计数器也被重置。每次我离开页面时。 关于如何做到这一点的任何提示。假设我在应用程序的一个页面中单击开关“打开”,然后导航到同一应用程序的另一个页面。或者完全关闭应用程序有没有办法让状态持续?这意味着开关根据人机交互/切换保持打开或关闭状态

资源: 用于持久存储简单值。还有一些选项,如/用于持久存储数据<代码>应用程序设置对于简单的键值对可能是一个不错的选择

import { Component } from "@angular/core";
import { setBoolean, getBoolean } from "tns-core-modules/application-settings";

@Component({
    selector: "Settings",
    moduleId: module.id,
    template: `
        <ActionBar title="Settings" class="action-bar">
        </ActionBar>

        <GridLayout>
            <ScrollView class="page">
                <StackLayout class="form">
                    <GridLayout columns="*,auto">
                        <Label text="On / Off" class="h2"></Label>
                        <Switch [ngModel]="value" (ngModelChange)="onSwtichChange($event)"></Switch>
                    </GridLayout>
                </StackLayout>
            </ScrollView>
        </GridLayout>
    `
})
export class SettingsComponent {

    value = getBoolean("my-value", false);

    constructor() {
    }

    onSwtichChange(value: boolean) {
        setBoolean("my-value", value);
    }
}
从“@angular/core”导入{Component};
从“tns核心模块/应用程序设置”导入{setBoolean,getBoolean};
@组成部分({
选择器:“设置”,
moduleId:module.id,
模板:`

将该值保存到永久性存储器中(如果您想在应用程序关闭/重新启动后仍保留该值),可以是应用程序设置或全局变量,并将值绑定到checked属性。我解决此问题的思路与此建议基本相同,但真正的问题是如何解决?您提到了全局变量。它们将放置在Angular/NativeScript应用程序中的何处?因为各个组件都有自己的组件HTML、CSS和typescript文件?这只是一个逻辑语句。如果你把一个对象放在JavaScript/typescript文件中,导出该变量,它可以在任何地方全局导入,并且保留该值。如果你使用Angular,则在app module中注入服务来保留该值更容易。如果太难,那么只需使用,wr查看checkedChange事件、读取和页面加载上的值。尝试了服务和应用程序方法:仍然为空您可以根据您的情况默认将其设置为打开或关闭尝试很好,但代码不起作用(保持切换状态).在我看到你的帖子之前,我自己玩过get和set boolean…没有骰子。这是一个测试你建议的代码的视频:我在这里遗漏了什么吗?还有其他建议吗?在我太沮丧之前,我已经完成了周六的任务,明天将再次访问,享受你的周末。谢谢你甚至尝试过游乐场链接,我相信它会起作用。您是否在模块中导入了NativeScriptFormsModule?感谢您抽出时间提供帮助。您提供的游乐场示例有效。但是,当我尝试将示例中的代码应用于我的项目时,我无法复制效果。我正在确保按照您的建议导入表单和常用模块,甚至创建了一个module文件就像你的例子一样。我的代码如下:已经连续8个多小时在这里被黑客攻击了。我不确定在这一点上该怎么做。