2016-12-05 2 views
0

Я до сих пор довольно новичок в этом и угловом 2. Я чувствую, что я собираюсь спросить вас, это очень важно, но я просто не могу обернуть вокруг себя. Таким образом, у меня есть компонент, который мы называем контейнер содержит нижестоящие компоненты, которые вы можете перемещаться тоже что-то вроде:тип события от ребенка до родителя

@Component({ 
    template:'<html> <router-outlet></router-outlet> </html>' 
}) 
export class ParentComponent implements OnInit{ 

    @ViewChild(childComponent) childComponent:ChildComponent; 
    constructor(){} 

    ngOnInit(){ 
     if(childComponent){ 
     childComponent.myEvent.subscribe(row=>this.test(row)); 
     } 
    } 


    test(row:any){ 
     alert("I Fired"); 
    } 
} 

@Component({ 
template:'<some html></some html>' 
}) 
export class ChildComponent implements OnInit{ 
    myEvent = new EventEmitter(); 
    constructor(){} 

    ngOnInit():void{ 
     this.myEvent.emit("some info"); 
    } 
} 

Так что вопрос, что я имею что в родительском, когда он пытается подписаться на случае childComponent нулевой. Любая помощь будет оценена. Спасибо.

ответ

0

Путь подписаться на ребенка событий с помощью шаблона:

@Component({ 
    template:'<html> <router-outlet (myEvent)="test($event)"></router-outlet> </html>' <-- Add the (myEvent) event handling here 
}) 
export class ParentComponent implements OnInit{ 

    @ViewChild(childComponent) childComponent:ChildComponent; 
    constructor(){} 

    test(row:any){ 
     alert("I Fired"); 
    } 
} 

@Component({ 
    template:'<some html></some html>' 
}) 
export class ChildComponent implements OnInit{ 
    @Output() myEvent = new EventEmitter(); <-- Use @Output() here 
    constructor(){} 

    ngOnInit():void{ 
     this.myEvent.emit("some info"); 
    } 
} 

Вы указываете событие метод обработчика в качестве родительского компонента и передать $ событие в качестве параметра для обработчика, чтобы передать то, что излучается.

Смежные вопросы