17.10.2018 Views

Angular

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

}<br />

// Displays 'Mr. IQ', '', 'Bombasto'<br />

names = ['Mr. IQ', ' ', ' Bombasto '];<br />

Parent listens for child event<br />

The child component exposes an EventEmitter property with which it emits events when something happens. The<br />

parent binds to that event property and reacts to those events.<br />

The child's EventEmitter property is an output property, typically adorned with an @Output decoration as seen in<br />

this VoterComponent:<br />

import { Component, EventEmitter, Input, Output } from '@angular/core';<br />

@Component({<br />

selector: 'my-voter',<br />

template: `<br />

{{name}}<br />

Agree<br />

Disagree<br />

`<br />

})<br />

export class VoterComponent {<br />

@Input() name: string;<br />

@Output() onVoted = new EventEmitter();<br />

voted = false;<br />

vote(agreed: boolean) {<br />

this.onVoted.emit(agreed);<br />

this.voted = true;<br />

}<br />

}<br />

Clicking a button triggers emission of a true or false (the boolean payload).<br />

The parent VoteTakerComponent binds an event handler (onVoted) that responds to the child event payload<br />

($event) and updates a counter.<br />

import { Component } from '@angular/core';<br />

@Component({<br />

selector: 'vote-taker',<br />

template: `<br />

Should mankind colonize the Universe?<br />

Agree: {{agreed}}, Disagree: {{disagreed}}<br />

<br />

<br />

`<br />

})<br />

export class VoteTakerComponent {<br />

agreed = 0;<br />

disagreed = 0;<br />

voters = ['Mr. IQ', 'Ms. Universe', 'Bombasto'];<br />

onVoted(agreed: boolean) {<br />

agreed ? this.agreed++ : this.disagreed++;<br />

}<br />

}<br />

Parent interacts with child via local variable<br />

GoalKicker.com – <strong>Angular</strong> 2 Notes for Professionals 42

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!