Académique Documents
Professionnel Documents
Culture Documents
{{ Html::script('angular2app/node_modules/angula
r2/bundles/angular2.js') }}
{{ Html::script('angular2app/node_modules/angula
r2/bundles/router.js') }}
{{ Html::script('angular2app/node_modules/angula
r2/bundles/http.js') }}
<script>
System.config({
packages: {
'angular2app': {
format: 'register',
defaultExtension: 'js'
}
}
});
System.import('angular2app/app/boot')
.then(null, console.error.bind(console));
</script>
</head>
<body>
<angular2-laravel></angular2-laravel>
</body>
</html>
Cmo puedes ver, nos faltan instalar las
dependencias, as que vamos a crear un archivo
dentro de public llamado package.json con el
siguiente contenido, podramos utilizar el archivo
de la raz pero as pienso que lo tenemos todo
mejor organizado y cada cosa en su sitio.
{
"name": "angular2-quickstart",
"version": "1.0.0",
"scripts": {
"tsc": "tsc",
"tsc:w": "tsc -w",
"start": "npm run tsc:w"
},
"license": "ISC",
"dependencies": {
"angular2": "2.0.0-beta.0",
"systemjs": "0.19.6",
"es6-promise": "^3.0.2",
"es6-shim": "^0.33.3",
"reflect-metadata": "0.1.2",
"rxjs": "5.0.0-beta.0",
"zone.js": "0.5.10"
},
"devDependencies": {
"typescript": "^1.7.3"
}
}
Para que nuestras dependencias sean instaladas
<li *ngFor="#animal of
animals">{{ animal.name }}</li>
</ul>
<br>
<h2>Router Outlet</h2>
<router-outlet></router-outlet>
Ahora vamos a crear los componentes Users y
Movies, primero users, as que crea el archivo
app/components/users/component.ts y aade el
siguiente cdigo.
import {Component} from "angular2/core"
@Component({
selector: "users",
template: `
<ul>
<li *ngFor="#user of users">{{ user }}</li>
</ul>
`
})
export class Users {
users: Array<any>;
constructor() {
this.users = [
"user1", "user2", "user3", "user4", "user5"
]
}
}
Y ahora app/components/movies/component.ts.
import {Component} from "angular2/core"
@Component({
selector: "movies",
template: `
<ul>
<li *ngFor="#movie of
movies">{{ movie }}</li>
</ul>
`
})
export class Movies {
movies: Array<any>;
constructor() {
this.movies = [
"movie1", "movie2", "movie3", "movie4",
"movie5"
]
}
}
En este punto necesitamos definir la clase que va a
permitir conectar a Angular 2 y Laravel
5 mediante peticiones http, as que crea el archivo
app/services/api.ts y aade el siguiente cdigo.
import {Injectable} from "angular2/core";
import {Http} from "angular2/http";
@Injectable()
export class Api {
apiUrl: string = "http://localhost:8080/api/";
constructor(private http: Http) { }
getAnimals() {
return new Promise((resolve, reject) => {
this.http.get(this.apiUrl +
"animals").subscribe(
res => {
resolve(res.json());
},
error => {
reject(error);
}
)
})
}
}
Simplemente es una clase que permite ser
inyectada en otras y hace uso de promesas
de ecmascript y la clase http de angular 2.
Finalmente slo nos queda definir el contenido del
archivo boot.ts, l ser el encargado de lanzar la
aplicacin construida con Angular 2.
import {bootstrap} from
"angular2/platform/browser"
import {provide} from 'angular2/core';
import {HomeComponent} from
"./components/home/component"
import {HTTP_PROVIDERS} from "angular2/http";
import {
LocationStrategy,
HashLocationStrategy,
ROUTER_DIRECTIVES,
ROUTER_PROVIDERS
} from 'angular2/router';
bootstrap(HomeComponent, [
ROUTER_PROVIDERS,
ROUTER_DIRECTIVES,
HTTP_PROVIDERS,
provide(LocationStrategy, {useClass:
HashLocationStrategy})
]);
Ahora slo debes situarte en el directorio public y
ejecutar el siguiente comando para que se generen
los archivos .js a partir de los .ts
npm start
Finalmente slo nos queda levantar el servidor con
el siguiente comando.
php artisan serve --port 8080