代码之家  ›  专栏  ›  技术社区  ›  Marco24690

角度2向应用程序根组件发射事件

  •  1
  • Marco24690  · 技术社区  · 6 年前

    我想向作为应用程序引导的组件发出一个事件。 这个组件是websocket连接的处理程序,我需要发送一条消息,这就是为什么我必须发出这个事件。

    在引导组件中,我只有 <router-outlet></router-outlet> 因此,我无法意识到我如何接受这一事件。

    实例

    应用程序。组成部分html

    <路由器出口></路由器出口>

    应用程序。组成部分ts

    @Component({
        selector: 'app-root',
        templateUrl: './app.component.html',
        styleUrls: ['./app.component.scss']
    })
    
    export class AppComponent {
    }
    

    应用程序。单元ts

    ...
    @NgModule({
      ...
      bootstrap: [AppComponent]
    })
    

    应用程序路由。单元ts

    ...
    const routes: Routes = [
      { path: 'display', component: MapDisplayComponent }
    ];
    

    地图显示。组件。ts

    @Component({
      selector: 'app-map-display',
      templateUrl: './map-display.component.html',
      styleUrls: ['./map-display.component.scss']
    })
    export class MapDisplayComponent {
        @Output() sendMessage: EventEmitter<any> = new EventEmitter<any>();
    }
    

    因此,问题是地图显示组件必须将事件发送给其父级

    2 回复  |  直到 6 年前
        1
  •  4
  •   hyper0009    6 年前

    使用服务。

    1. 将服务注入组件和主组件。
    2. 向服务中添加发射器或可观察对象。
    3. 如果您使用发射器,请在服务中添加一个函数来更改可观察/发射的值。
    4. 使用组件中的函数。
    5. 订阅主要组件中的发射器或可观察对象。

    希望这有帮助。

        2
  •  1
  •   Raed Khalaf    6 年前

    您可以使用服务来管理组件之间的通信。

    看看 this 问题和答案。
    不要忘记将服务注入组件和主组件