Angular 角度计时器替代方案还是最佳方法
我目前正在为一个项目使用Angular 8,我有一个带有复选框的组件,它将决定页脚是否可见 因为页脚是设置组件的一个独立组件,所以我当前需要将页脚放在setTimeout上,每5秒检查一次局部变量Angular 角度计时器替代方案还是最佳方法,angular,typescript,Angular,Typescript,我目前正在为一个项目使用Angular 8,我有一个带有复选框的组件,它将决定页脚是否可见 因为页脚是设置组件的一个独立组件,所以我当前需要将页脚放在setTimeout上,每5秒检查一次局部变量 setTimeout(function(){ checklocalStorage() }, 5000); 当它只有一个计时器是可以的,但当我添加更多的计时器时,这似乎是一个不干净的方法 有没有其他方法可以做到这一点,让组件自己更新,而不必让计时器一直循环以检查localstorage变量中是否有任何
setTimeout(function(){ checklocalStorage() }, 5000);
当它只有一个计时器是可以的,但当我添加更多的计时器时,这似乎是一个不干净的方法
有没有其他方法可以做到这一点,让组件自己更新,而不必让计时器一直循环以检查localstorage变量中是否有任何更改,或者这是推荐的方法?组件通信是Angular的核心部分,如何进行通信主要取决于您和/或您的团队。在这种情况下,setTimeout是不合适的;这不仅是因为它只会在重复的时间间隔调用一次setInterval,而且还因为它效率不高 这意味着,如果选中复选框,您仍有可能等待近5秒,以获得关于您在暴露或关闭页脚的结果中所做操作的反馈
相反,考虑组件可以在它们之间绑定数据的四种主要方式:
服务: 您可以构造一个处理组件之间通信的服务。服务是可注入的,这意味着您可以将它们注入多个组件,并且可以在应用程序的根级别加载它们 只需创建一个服务并将其提供到您需要的模块中 然后-在您的服务中创建一个可观察的,并在需要访问您的信息的组件中订阅该可观察的 阅读更多有关可观测数据的信息,请访问: 在上面的链接中,还有一个称为延迟序列的示例,它可能适合您的目的 NgRx: 使用Redux NgRx被视为实现组件间通信的高级方法,但它是管理数据和数据检索的一个不变且可靠的来源 对于您的场景,如果您不使用它,请不要单独在此解决方案上实现它-但是为了实现它,您只需在显示或隐藏页脚时发送一个操作,然后您就可以在其他位置的存储中订阅该数据 请在此处阅读有关该商店的更多信息: @输入和输出: 如果组件是嵌套的,则可以使用输入和输出处理它们之间的数据。比如说,你有一个页面组件。理论上,你的页脚应该在里面,你的复选框应该在里面。 因此,您的复选框可以将一个值数据绑定到页面组件。然后可以将其绑定到页脚组件 然而,这可能会变得混乱,只有在您确定数据没有在其他地方被操纵时才应该使用 阅读更多有关输入和输出以及通用组件通信的信息,请访问: 事件总线: 从技术上讲,您可以使用事件总线向您的应用程序发送一个通知,告诉它立即显示此页脚,尽管这可能不是最好的方法 事件总线的使用通常更多地用于通知目的,或者当您不需要知道哪个组件调用了操作时 本质上,事件总线只是用来监听事件或环境,而不是追踪事件发生的地点或方式阅读更多关于Angular中事件Emmiter的信息,这里:为什么不使用rxjs interval?如何更改局部变量?它只是改变了角度应用程序,而不是导航器中的其他选项卡,方法是使用服务,因此当变量改变时,存储在本地variabel中并发出值。您只订阅可观察的主题无论如何,您不应该使用这种方法,尝试创建一个主题服务,该主题将在每次本地存储有新值时发出事件,或者您可以使用一个将本地存储与RXJS集成的库,我相信Npm中有一个