5

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

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>元素?

有人可以帮忙吗?

4

2 回答 2

9

<router-outlet></router-outlet>被认为是一个placeholder带有添加的目的routed components。它不支持任何类型的绑定。

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

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

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

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

1)角度文档

2)创建共享服务角度

3)示例 1 示例 2

于 2018-07-17T07:03:13.187 回答
0

不,您不能将事件发射器打开 router-outlet

我建议您拥有自己的带有输入属性的组件并在其上使用偶数

<list [list]="list" (onStateChanged)="stateChanged($event)"></list>

于 2018-07-17T02:11:06.053 回答