angular - eventEmitter 可以在路由器 socket 上工作吗?

标签 angular eventemitter router-outlet

我在我的父组件中,我想检测发出的事件。

child.component.ts

@Component({
    selector: 'child-component',
    templateUrl: './child.component.html',
    styleUrls: ['./child.component.scss']
})   
export class ChildComponent implements OnInit { 

    @Input() public state: String = 'CLOSED';

    @Output() public stateChanged: EventEmitter<String> = new EventEmitter<String>();

    this.stateChanged.emit(this.state);

}

父组件.html
<router-outlet (stateChanged)="onStateChange($event)"><router-outlet>

父组件.ts
onStateChange(event){
    console.log(event);
}

这对我不起作用!

编译后的 HTML 代码如下所示:
<router-outlet></router-outlet>
<child-component>
    // all child component code
<child-component>

有没有办法推送(stateChanged)="onStateChange($event)"<child-component>元素?

有人可以帮忙吗?

最佳答案

<router-outlet></router-outlet>被认为是 placeholder目的是添加 routed components .它不支持任何类型的绑定(bind)。

但是有更新到 <router-outlet></router-outlet>带有允许添加组件的事件:Source

<router-outlet (activate)="componentAdded($event)" (deactivate)="componentRemoved($event)"></router-outlet>

这有助于通过 componentAdded() 与 getter、setter 和方法进行通信

首选方法是使用共享服务检查这些链接以创建共享服务

1) Angular Doc

2) Create shared service angular

3) Example1 Example2

关于angular - eventEmitter 可以在路由器 socket 上工作吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51372269/

相关文章:

angular - 从 ngrx/store 获取单个项目

php - 将带有 formData 的数据发送到 mysql

angular - 我在 ngx-datatable 的每个标题单元格中都有一个自定义下拉组件

node.js - 合并NodeJS流时如何调用 `setMaxListeners`

node.js - 如何导出nodejs事件发射器

javascript - JQuery 触发自定义事件导致错误

Angular 5 如何删除 URL 中的辅助路由器导出名称但导出应加载

dependency-injection - Angular2 Beta 依赖注入(inject)

angular - Router-outlet 在 Routerlink 导航后没有更新