by Jeremy Mason


$scope.$digest();
angular.module(...)
<module>.controller(...)

noun; a part or element of a larger whole

| Properties | The state of the component.disabled .value |
Methods | The behavior of the component .click() .focus() |
Events | Notifies listeners of state changes .on('click', ...).on('change', ...) |
<media></media>
<media title="Hello {{ user.Name }}"></media>
<media [url]="media.url"></media>
<media bind-url="media.url"></media>
<media (play)="onPlay($event)"></media>
<media on-play="onPlay($event)"></media>
<media title="{{ media.title | uppercase }}"></media>
export class Pipe {
// True if the value can be transformed.
// False, otherwise.
supports(obj): boolean;
// Transforms the value.
transform(obj);
// Cleans up this instance.
onDestroy();
}<my-component> <label>Your name: <label> <input #name /> <button (click)="sayHello(name.value)">Say Hello</button> </my-component>
class MyComponent {
sayHello(name: string) {
alert('Hello ' + name + '!');
}
}<ul>
<li *ng-for="#user in users">
<span>{{ user.Name }}</span>
</li>
</ul>
<template [ng-for] #user [ng-for-of]="users">...</template>
<div *ng-if="isError">
Login failed, please try again.
</div>
<template [ng-if]="isError">...</template>

<my-component>
<header>
<!-- Header -->
</header>
<main>
<!-- Content -->
</main>
<footer>
<!-- Footer -->
</footer>
</my-component><div class="container">
<div class="header">
<content select="header"></content>
</div>
<div class="main-content-wrapper">
<div class="main-content">
<content select="main"></content>
</div>
</div>
<div class="footer">
<content select="footer"></content>
</div>
</div>import {Component, View, bootstrap, NgFor} from 'angular2/angular2';
import {ItemStore} from 'services/ItemStore';
@Component({
selector: 'my-app',
appInjector: [ItemStore]
})
@View({
templateUrl: 'templates/my-app.html',
directives: [NgFor]
})
class MyApp {
_itemStore: ItemStore;
constructor(itemStore: ItemStore) {
this._itemStore = itemStore;
}
add($event, input) {
this._itemStore.add(input.value);
input.value = '';
}
}
bootstrap(MyApp);class MyApp {
constructor() {
}
add($event, input) {
}
}import {bootstrap} from 'angular2/angular2'; class MyApp { constructor() { } add($event, input) { } } bootstrap(MyApp);
import {Component, View, bootstrap, NgFor} from 'angular2/angular2';
import {ItemStore} from 'services/ItemStore';
@Component({
selector: 'my-app'
appInjector: [ItemStore]
})
@View({
templateUrl: 'templates/my-app.html',
directives: [NgFor]
})
class MyApp {
constructor(itemStore: ItemStore) {
}
add($event, input) {
}
}
bootstrap(MyApp);@Class class MyClass { @Method myMethod(@Param myParam) { ... } }
function MyClass() {
...
}
MyClass.annotations = [
new Foo()
]@Directive({ selector: '<css-selector>', properties: [ 'propName', 'propName: attrName', 'propName: attrName | pipe' ], events: [ '<event-name>' ] // and more ... })
import {MyService} from '...';
@Component({
// Same as @Directive
appInjector:
[ MyService ]
// and more ...
})import {DirectiveType} from '...';
@View({
template:
'<div></div>',
templateUrl:
'path/to/template.html',
directives:
[ DirectiveType ]
// and more ...
})import {MyService} from '...'; @Component({ selector: '...', appInjector: [ MyService ] }) class MyComponent { constructor(myService: MyService) { ... } }
ElementRef
ViewContainerRef
BindingPropagation
<no-decoration>
@Ancestor
@Parent
@Query
@QueryDescendants
<tabset>
<tab>
...
</tab>
</tabset>import {TabSet} from '...';
@Component({
selector: 'tab'
})
class Tab {
constructor(@Parent() tabs: TabSet) {
...
}
}<form [control-group]="searchForm"> <label>Name</label> <input type="text" control="name" /> </form>
import {View} from 'angular2/angular2';
import {FormBuilder, Validators, formDirectives, ControlGroup} from 'angular2/forms';
class LoginComponent {
searchForm: ControlGroup;
constructor(builder: FormBuilder) {
this.searchForm = builder.group({
name: ["", Validators.required]
});
}
}MyController.$routeConfig = [
{
path: '/user',
components:
{
master: 'userList',
detail: 'user'
}
}
];
<div ng-viewport="master"></div> <div ng-viewport="detail"></div>