2015-12-21 40 views
1

我已經創建了一個使用角度2的小應用程序,並且在我的應用程序中創建了2個組件調用app.component.ts和sidkik.component.ts我嘗試將sidkik.component.ts導入app.component.ts,並在app.component中使用sidkik的sidkik標籤,並在控制檯中給出以下錯誤。請幫助我解決這個問題。Angular 2給出「TypeError:emitter.subscribe不是函數」

erorr

angular2.dev.js:23524 EXCEPTION: TypeError: emitter.subscribe is not a function in [heroes in [email protected]:6] 

app.component.js

import {Component} from 'angular2/core'; 
import {SideKikComponent} from './classes/sidekik.component'; 

interface Hero { 
id: number; 
name: string; 
sidekik:string; 
} 

@Component({ 
    selector: 'my-app', 
    templateUrl:'app/views/heros.html', 
    directives: [SideKikComponent], 
    styleUrls: ['app/css/site.css'] 
}) 

export class AppComponent { 
    public title = 'Tour of Heroes'; 
    public heroes =HEROS; 
    public selectedHero: Hero; 

    onSelect(hero: Hero) { 
    this.selectedHero = hero; 
    } 
} 

var HEROS: Hero[] =[ 
    {"id":1,"name":"SuperMan","sidekik":"one"}, 
    {"id":2,"name":"Captain America","sidekik":"two"}, 
    {"id":3,"name":"Thor","sidekik":"three"}, 
    {"id":4,"name":"Iorn Man","sidekik":"four"}, 
    {"id":5,"name":"Ant Man","sidekik":"five"} 
]; 

sidkik.component.ts

import {Component} from 'angular2/core'; 

@Component({ 
    selector:'sidekik', 
    events:['hit'], 
    properties:['define'], 
    template: ` 
    <sidekik (click) = "hit(define)"></sidekik> 
    `, 

}) 

export class SideKikComponent{ 
    hit(define:string){ 
    console.log(define); 
    } 
} 
+0

有很多錯誤..你可以在github或plunker上分享代碼嗎? –

+0

好吧,我會發送鏈接 –

回答

1

錯誤是由您定義組件的方式引起的。特別是,events: ['hit'], Angular期望這是組件中的EventEmitter實例,該實例將觸發其他組件可訂閱的SidekikComponent實例的事件。你定義爲hit雖然是一個函數,將被稱爲點擊事件調用。

正如其他人指出的,您在提供的代碼段中還有其他問題,例如template:不應該包含其中的組件選擇器。

+0

謝謝@Zyzle然後它應該如何? –

+0

'sidekik'標籤應該用在你想要這些組件存在的模板中。在你定義的模板中,你應該使用'sidekik'組件構成的元素(或其他組件)。 – Zyzle

相關問題