Angular 角相关分量

Angular 角相关分量,angular,Angular,我有三个部分 类别组件-类别列表 ListComponent—选定类别的元素列表 ScreenComponent—MenuComponent和ContentComponent的组合 ScreenComponent模板如下所示: <category-list></category-list> <elements-list [categoryId]="6"></elements-list> 我希望ListComponent获取Category

我有三个部分

  • 类别组件-类别列表
  • ListComponent—选定类别的元素列表
  • ScreenComponent—MenuComponent和ContentComponent的组合
ScreenComponent模板如下所示:

<category-list></category-list>
<elements-list [categoryId]="6"></elements-list>


我希望ListComponent获取CategoryComponent中所选类别的ID,而不是硬编码的
6
。我该怎么做?这是正确的方法还是CategoryComponent工作应该由ScreenComponent完成?

由于这两个组件之间没有关系(父/子),您需要利用共享服务。元素列表将注册到服务中的一个可观察对象,当选择一个类别时,将收到通知,并相应地更新自身

该服务可以同时包含数据和可观测数据,以便在数据更新时得到通知

  • 服务

    export class SharedService {
      observable: Observable<any>;
      observer: Observer<any>;
    
      constructor() {
        this.observable = new Observable.create(observer => {
          this.observer = observer;
        }).share();
    
      updateData() {
        this.observer.next('something');
      }
    }
    
  • 自举

    bootstrap(AppComponent, [ SharedService ]);
    
有关更多详细信息,请参见此问题:


由于这两个组件之间没有关系(父/子),因此需要利用共享服务。元素列表将注册到服务中的一个可观察对象,当选择一个类别时,将收到通知,并相应地更新自身

该服务可以同时包含数据和可观测数据,以便在数据更新时得到通知

  • 服务

    export class SharedService {
      observable: Observable<any>;
      observer: Observer<any>;
    
      constructor() {
        this.observable = new Observable.create(observer => {
          this.observer = observer;
        }).share();
    
      updateData() {
        this.observer.next('something');
      }
    }
    
  • 自举

    bootstrap(AppComponent, [ SharedService ]);
    
有关更多详细信息,请参见此问题: