我有两个组件,它们具有非常简单的输出事件和处理程序,试图将一个值从子模块传递给我的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');
});