angular2组件中的fire事件

时间:2017-01-24 19:03:52

标签: angular

我有两个组成部分:

app.component
site.component

我想从应用程序组件中的站点组件中捕获事件。 但是从路由器渲染的站点组件(当我点击某个链接时) 现在,我在网站组件中有:

@Component({
  selector: 'app-sites-list',
  templateUrl: './sites-list.component.html',
  styleUrls: ['./sites-list.component.css'],
  outputs: ['counterChange'],

})
export class Sites implements OnInit {

  public counterChange = new EventEmitter();

并在tmplate中:

 <button type="submit" (click)="check(url.value);">Go</button>

那么,我如何在app组件中捕获此事件。感谢

1 个答案:

答案 0 :(得分:1)

不在父/子层次结构中的组件通常通过可注射服务进行通信。这样的事情(我没有测试过这段代码):

import {Subject} from "rxjs/Rx";

@Injectable()
export class MyService {

    public notifierSubject:Subject = new Subject();

    public notify(something:any) {
       this.notifierSubject.next(something);
    }
} 

在组件1中,发件人:

 constructor(myService:MyService) {
 }

 check(value) {
    this.myService.notify(value);
 }

在组件2中,接收者:

 constructor(myService:MyService) {
     myService.notifierSubject.subscribe(data => { console.log(data); });
 }

在这个例子中,我从RxJS中选择了Subject。当然,你可以自由选择你想要的任何东西。您可以订阅的所有内容都应该完成。