Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/396.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.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
Javascript 事件发射器中的subscribe/@Output/@input是什么?_Javascript_Angularjs_Typescript - Fatal编程技术网

Javascript 事件发射器中的subscribe/@Output/@input是什么?

Javascript 事件发射器中的subscribe/@Output/@input是什么?,javascript,angularjs,typescript,Javascript,Angularjs,Typescript,我是Angular2的新手,我想知道: 订阅 @输出 @输入 事件中发射器处于角度2?如何在Angular中使用它们?订阅 @输入和输出 可以传递给@Component decorator以实现向下和向上的数据流的两个属性:“输入”和“输出”。这两个属性有时令人困惑,因为在Angular 2 alpha的早期版本中,它们被称为“属性”(用于“输入”)和“事件”(用于“输出”)一些开发人员对名称的更改并没有那么着迷,尽管这似乎是有意义的 因此,输入,正如您可能从上面的层次结构讨论中猜到的那

我是Angular2的新手,我想知道:

  • 订阅
  • @输出
  • @输入
  • 事件中发射器处于角度2?如何在Angular中使用它们?

    订阅


    @输入和输出
    • 可以传递给@Component decorator以实现向下和向上的数据流的两个属性:“输入”和“输出”。这两个属性有时令人困惑,因为在Angular 2 alpha的早期版本中,它们被称为“属性”(用于“输入”)和“事件”(用于“输出”)一些开发人员对名称的更改并没有那么着迷,尽管这似乎是有意义的

    • 因此,
      输入
      ,正如您可能从上面的层次结构讨论中猜到的那样,指定可以在组件上设置哪些属性,而
      输出
      标识组件可以触发的事件,以将信息向上发送到其父级层次结构


    我们使用输入和输出装饰器将信息从一个组件传递到另一个组件,如上游或下游的父组件和子组件。传递的信息以可观测值的形式从rxjs传递

     this.weatherService.getLukeSkywalkerObservable().subscribe(res => {
            this.lsObservable = res;
        });
    
    接下来,我们在这个可观察的上调用
    subscribe
    ,它允许我们监听任何通过的数据。在订阅过程中,我们使用三种不同的回调:第一种是在接收新值时调用的,第二种是在出现任何错误时调用的,最后一种是在传入数据序列完整且成功时调用的函数

    关于输入输出的使用,请查看此链接

    在本例中,我们使用事件发射器将信息从父级传递到子级,并观察组件中发生的更改,当值更改时,我们订阅这些更改,这一切都由Rxjs负责

    相同的代码可以在链接上找到

    在http调用中使用类似于订阅的方法,在http调用中,我们获取数据流并订阅它

    订阅

     this.weatherService.getLukeSkywalkerObservable().subscribe(res => {
            this.lsObservable = res;
        });
    
    其中getLukeSkywalkerObservable是一个服务调用

    getLukeSkywalkerObservable(){
          return this.http.get('https://swapi.co/api/people/1/')
                  .map(res => {
                     return  res.json(); // using maps to filter data returned form the http call
                  }).map(data => {
                    return data; // using maps of maps to filter data returned form the map
            }).flatMap((jedi) => this.http.get(jedi.homeworld))
              .map(res => {
               return res.json().name; // using flat maps to combine data returned from two observables into one
              }).catch((error:any) => Observable.throw(error.json().error || 'Server error'));
    
          //switchMap is very similar to flatMap, but with a very important distinction.
        // Any events to be merged into the trunk stream are ignored if a new event comes in.
      }
    
    One Update 
    
    如果您想在组件之间传递信息,请使用@MarkRajcok的回答

    他定义了为什么使用行为主体ct或回放主体而不是事件发射器