2017-05-18 32 views
1

在Angular 2中,如何使用ViewChild in Typescript爲其方法處理程序分配EventEmitter?角2;使用ViewChild在Typescript而不是HTML中將方法賦值給EventEmitter?

使用HTML從EventEmitter處理事件:

my.component.html

<some-component [someProperty]="myProperty" (onSomeEvent)="myMethod($event)></some-component> 

my.component.ts

export class MyComponent { 
    public myProperty: string; 
    ... 
    public myMethod(event: any) { 
     ... //handle event 
    } 
    ... 
} 

我如何更願意處理事件(在打字稿中):

my.component.html

<some-component #someComponent></some-component> 

my.component.ts

export class MyComponent { 
    @ViewChild('someComponent') someComponent: SomeComponent; 
    ngOnInit() { 
     this.someComponent.someProperty = myProperty; 
     this.someComponent.onSomeEvent = ? <-- How do I assign EventEmitter? 
    } 
    public myProperty: string; 
    ... 
    public myMethod(event: any) { 
     ... //handle event 
    } 
    ... 
} 

回答

3

想通了這一點,一個月後,當我遇到問題就來了一次無心插柳,找回我自己的問題在搜索。

因爲Angular的EventEmitters使用observables,所以他們只是在訂閱Observable。如果你想在組件typescript中分配處理程序,你也可以這樣做。

從我上面的例子:

export class MyComponent { 
    @ViewChild('someComponent') someComponent: SomeComponent; 
    ngOnInit() { 
     this.someComponent.someProperty = myProperty; 
     this.someComponent.onSomeEvent.subscribe(event => this.myMethod(event)); 
    } 
    public myProperty: string; 
    ... 
    public myMethod(event: any) { 
     ... //handle event 
    } 
    ... 
}