
Comparing Component and Controller
Angular 2
The Component
Controllers are a big part of Angular 1 that is going away in Angular 2. In Angular 2 you will probably write all your controllers as components.
- import {Component} from 'angular2/core'
- @Component({
- selector: 'my-app',
- providers: [],
- template: `
- <div>
- <h2>Hello {{name}}</h2>
- </div>
- `,
- directives: []
- })
- export class App {
- constructor() {
- this.name = 'Angular2'
- }
- }
- <my-app>
- loading...
- </my-app>
Angular 1
The Controller
- var app = angular.module('app', []);
- app.controller('MainCtrl', function($scope) {
- $scope.name = 'Hello Angular1';
- });
- <body ng-controller="MainCtrl">
- <h2>{{name}}</h2>
- </body>
Structural Directives
Angular 2
*ngFor, *ngIf
- <ul>
- <li *ngFor="#ball of balls">
- {{ball.name}}
- </li>
- </ul>
- <div *ngIf="balls.length">
- <h3>You have {{balls.length}} balls</h3>
- </div>
Angular 1
ng-repeat, ng-if
- <ul>
- <li ng-repeat="ball in balls">
- {{ball.name}}
- </li>
- </ul>
- <div ng-if="balls.length">
- <h3>You have {{balls.length}} ball </h3>
- </div>
Two-Way Data Binding
Angular 2
[(ngModel)]='value'
- <input [(ngModel)]="me.name">
Angular 1
ng-model='value'
- <input ng-model="me.name">
Property Binding
Angular 2
[Property]='Property'
- <div [style.visibility]="tools ? 'visible' : 'hidden'">
- <img [src]="imagePath">
- <a [href]="link">{{tools}}</a>
- </div>
Angular 1
ng-property='Property'
- <div ng-style="tools ? {visibility: 'visible'}: {visibility: 'hidden'}">
- <img ng-src="{{tools}}">
- <a ng-href="{{tools}}">
- {{tools}}
- </a>
- </div>
Event Binding
Angular 2
(event)='action()'
- <input
- (blur)="log('blur')"
- (focus)="log('focus')"
- (keydown)="log('keydown', $event)"
- (keyup)="log('keyup', $event)"
- (keypress)="log('keypress', $event)"
- >
Angular 1
ng-event='action()'
- <input
- ng-blur="log('blur')"
- ng-focus="log('focus')"
- ng-keydown="log('keydown', $event)"
- ng-keyup="log('keyup', $event)"
- ng-keypress="log('keypress', $event)"
- >
Services and DI
Angular 2
Injectable Service
In Angular 1 we use services by using any one of Factory
, Services
, Providers
, Constants
, Values
which all are covered under a provider.
But in Angular 2 all this are consolidated into one base Class
.
- import {Injectable} from 'angular2/core';
- @Injectable()
- export class StudentService {
- getStudents = () => [
- { id: 1, name: 'Nisar' },
- { id: 2, name: 'Sonu' },
- { id: 3, name: 'Ram' }
- ];
- }
Using same service in Component
- import { Component } from 'angular2/core';
- import { StudentService } from './student.service';
- @Component({
- selector: 'my-students',
- templateUrl: 'app/student.component.html',
- providers: [StudentService]
- })
- export class StudentsComponent {
- constructor(
- private _StudentService: StudentService) { }
- students = this._StudentService.getStudents();
- }
Angular 1
Service
- (function () {
- angular
- .module('app')
- .service('StudentService', StudentService);
- function StudentService() {
- this.getStudents = function () {
- return [
- { id: 1, name: 'X-Wing Fighter' },
- { id: 2, name: 'Tie Fighter' },
- { id: 3, name: 'Y-Wing Fighter' }
- ];
- }
- }
- })();
Using same service in Controller
- (function () {
- angular
- .module('app', [])
- .controller('StdController', StudentsController);
- StudentsController.$inject = ['StudentService'];
- function StdController(StudentService) {
- var std = this;
- std.title = 'Services';
- std.Students = StudentService.getStudents();
- }
- })();
No comments:
Post a Comment