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