Angular2 – 如何在组件之间共享数据/更改

前端之家收集整理的这篇文章主要介绍了Angular2 – 如何在组件之间共享数据/更改前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
所以我们假设你有一个界面有一个工具栏,边栏和一个网格.工具栏有一个下拉菜单,当用户更改时,侧栏和网格中的内容会更改.回到角度1,我将使用一个服务来拥有我所有的动态数据.当服务发生变化时,使用该服务的所有组件也将更新.

在角度2,看起来人们正在使用不同的方法.我想得到你最喜欢的方式的输入.

>静态服务
> OnChanges
>输入和输出

更新 – 03/09/16

看起来最好的解决方案是Thierry Templier发布的线程:Delegation: EventEmitter or Observable in Angular2

剩下的问题是,如果最好的做法是为组件之间共享的每个数据项创建一个新的服务,或者我们只能有一个服务具有存储所有共享数据的对象.

See Plnkr for code

Original Plunker
– 每个变化都有自己的服务

Revised Plunker for example
– 只有一个服务将所有数据存储在对象中.一个类型将被传递给每个监听器,以检查它是否需要根据该类型执行任何操作.

您可以为此使用共享服务.当数据更新时,它可以包含要订阅的数据和可观察数据.

>服务

export class ListService {
  list1Event: EventEmitter<any> = new EventEmitter();

  getLists() {
    return this.http.get(url).map(res => res.json())
      .subscribe(
        (data) => {
          this.list1Event.emit(data.list1);
        }
      );
  }
}

>组件

@Component({
  selector: 'my-component1',template: `
    <ul>
     <li *ngFor="#item of list">{{item.name}}</li>
    </ul>
  `
})
export class MyComponent1 {
  constructor(private service:ListService) {
    this.service.list1Event.subscribe(data => {
      this.list = data;
    });
  }
}

>引导

bootstrap(AppComponent,[ ListService ]);

有关详细信息,请参阅此问题

> Delegation: EventEmitter or Observable in Angular2
> Delegation: EventEmitter or Observable in Angular2
> Is possible to have two template for single call service in AngularJS 2

猜你在找的Angularjs相关文章