我有两个组件,它们具有非常简单的输出事件和处理程序,试图将一个值从子模块传递给我的app.module中的组件。这是我的app.component.ts

@Component({
  selector: 'my-app',
  template: `
  <sidebar *ngIf="showHeader" (everySecond)="everySecond()" ></sidebar>
  <navbar *ngIf="showHeader" (toggleNav)="toggleNav($event)"></navbar>
  <router-outlet></router-outlet>`,
  directives: [homeComponent, sidebarComponent, navbarComponent]
})
export class AppComponent {
  everySecond() { console.log('second'); }
}

在app.module.ts中,我导入了包含以下组件的tutorialModule
export class tutorialComponent {
  @Output() everySecond = new EventEmitter();

  constructor() {
    this.everySecond.emit("event");
    console.log("here");
  }
}

但是,当我路由到tutorialComponent时,“here2”日志会被打印出来,但“second”日志永远不会被触发。我假设这是因为tutorialcomponent没有声明为app.component的指令(因为它是作为模块导入的)。我怎样才能让它工作?

最佳答案

您需要订阅应用程序组件中的everySecond
例如:

this.tutorialComponent.everySecond.subscribe((data) => {
   console.log('second');
});

09-19 08:20