Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/29.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
再谈Angular2中的全球数据_Angular - Fatal编程技术网

再谈Angular2中的全球数据

再谈Angular2中的全球数据,angular,Angular,如果我的angular2应用程序看起来像这样,上面的金发女郎要和中间右边的ginger聊天,他们应该为此组织一个聚会吗 发出事件,使用输入和输出-这是angular2方式吗?数据应该从一个子级到父级再到根级,然后从父级到子级再到点?我是新来的,通常我希望有一些全局对象,我可以保存一些所有组件都需要知道的信息。当该全局对象中的数据发生变化时,它所注入的所有其他服务和组件中的数据都应该发生神奇的变化。例如,用户登录/注销,或者单击按钮等等 import {Injectable} from 'angu

如果我的angular2应用程序看起来像这样,上面的金发女郎要和中间右边的ginger聊天,他们应该为此组织一个聚会吗

发出事件,使用输入和输出-这是angular2方式吗?数据应该从一个子级到父级再到根级,然后从父级到子级再到点?我是新来的,通常我希望有一些全局对象,我可以保存一些所有组件都需要知道的信息。当该全局对象中的数据发生变化时,它所注入的所有其他服务和组件中的数据都应该发生神奇的变化。例如,用户登录/注销,或者单击按钮等等

import {Injectable} from 'angular2/core';

@Injectable()
export object Globals {
    logged: false,
    showThatDiv: true
}
但我在某个地方读到它是Angular1,而不是Angular2。是这样吗?还是我错了?它看起来不像全局汤,只是全局状态的对象

例如,现在我有了这样的结构:

|-root
  |-google api component
    |-google auth
    |-youtube api
      |-playlists
      |-video
  |-myComponent
    |-sub1
      |-sub2
        |-sub3
  |...
mySub1组件需要知道用户是否登录,如果是,则在sub2中显示(*ngIf)一些div。或者从googleAuth服务中的mySub3组件调用checkGauth()。从mySub2组件将视频添加到YouTube播放列表并在sub2中添加显示结果,或从sub3创建新播放列表并在sub2上显示。很多变体

我厌倦了为所有这些编写代码。这使它更加复杂。有时会考虑这样做:

 |-root
   |-google api component
   |-google auth
   |-youtube api
   |-playlists
   |-video
   |-myComponent
   |-sub1
   |-sub2
   |-sub3
   |...

为每个API构建服务是将组件从混乱中分离出来的好方法。在您的情况下,您需要构建一个谷歌服务,它可以在应用程序运行的当前状态下保存您的上下文。服务可以在需要的时候和地点注入到组件中

话虽如此,在某些情况下,我们无法划清界限。在这些情况下

  • 消息传递,通过您的组件传递数据,在您的情况下,如果您的家长知道登录,而孩子想知道登录,请传递它,绑定将保持更新,以便您在孩子组件上可靠地使用它

  • 创建一个助手,该助手封装了与功能相关的所有功能。使用旧样式导入引用它,并在组件上使用它

  • 发出事件,使用输入和输出-这是angular2方式吗

    是的,这是了解组件需要什么和组件发出什么的最佳方法。但这并不难,双向数据绑定可以让您以最小的努力实现这一点

    数据应该从子级到父级再到根级,然后从 父到子到点

    让子节点通过输入从父节点获取数据,并以回调的形式返回输出


    希望它能帮助你开始。欢迎来到Angular 2,你会喜欢这里的

    服务是单例的,可以用来共享状态。现在我想angular2的时候会想到山羊…谢谢>\u>像往常一样,这取决于。。。你的问题太宽泛了。当你说“当数据发生变化时……它应该在所有其他……组件中发生变化”——组件需要得到通知,还是数据只需要改变?也就是说,您是否需要组件做一些事情,比如在数据更改时调用函数,或者您是否只需要更新组件的视图,哪个角度会自动为您做?我建议你问一个更具体的问题,或者几个问题。我更新了这个问题,如果我需要从googleAuth服务中的mySub3组件调用checkGauth()中找到如何在ng2方式中执行?检查这个Plunkr,注意heroservice,它被传递到构造函数上的组件中,然后你就可以这样做了。googleAuthService.checkGauth()在控制器上。