Muestra las diferencias entre dos versiones de la página.
| Ambos lados, revisión anterior Revisión previa Próxima revisión | Revisión previa | ||
|
wiki2:angular:basics [2016/07/14 20:34] alfred [Components] |
wiki2:angular:basics [2020/05/09 09:25] (actual) |
||
|---|---|---|---|
| Línea 60: | Línea 60: | ||
| name: 'Windstorm' | name: 'Windstorm' | ||
| }; | }; | ||
| + | </code> | ||
| + | |||
| + | Una propiedad a la que se le asigna un array vacío: | ||
| + | <code> | ||
| + | missions: Mission[] = []; | ||
| + | </code> | ||
| + | |||
| + | Convertir objeto a JSON: | ||
| + | <code> | ||
| + | return JSON.stringify(this.model); | ||
| + | </code> | ||
| + | ==== Listas ==== | ||
| + | Encontrar un elemento en una lista: | ||
| + | <code javascript> | ||
| + | getHero(id: number) { | ||
| + | return this.getHeroes() | ||
| + | .then(heroes => heroes.find(hero => hero.id === id)); | ||
| + | } | ||
| + | </code> | ||
| + | Recoger unos elementos concretos: | ||
| + | <code javascript> | ||
| + | this.heroService.getHeroes() | ||
| + | .then(heroes => this.heroes = heroes.slice(1, 5)); | ||
| </code> | </code> | ||
| ===== Elements ===== | ===== Elements ===== | ||
| Línea 156: | Línea 179: | ||
| } | } | ||
| `] | `] | ||
| + | </code> | ||
| + | |||
| + | También podemos hacerlo desde un fichero externo con: | ||
| + | <code javascript> | ||
| + | styleUrls: ['app/dashboard.component.css'] | ||
| + | </code> | ||
| + | |||
| + | Para añadir los estilos globales de toda la app simplemente añadiremos el link al index.html: | ||
| + | <code html> | ||
| + | <link rel="stylesheet" href="styles.css"> | ||
| </code> | </code> | ||
| Línea 332: | Línea 365: | ||
| AppComponent únicamente debería manejar la navegación. El objeto router es el encargado de gestionarla y es una combinación del ''provideRouter'', directivas y configuración. | AppComponent únicamente debería manejar la navegación. El objeto router es el encargado de gestionarla y es una combinación del ''provideRouter'', directivas y configuración. | ||
| + | |||
| + | Es necesario tener en el index.html: | ||
| + | <code> | ||
| + | <head> | ||
| + | <base href="/"> | ||
| + | </code> | ||
| Crearemos un fichero ''app.routes.ts'' donde añadiremos todas las rutas: | Crearemos un fichero ''app.routes.ts'' donde añadiremos todas las rutas: | ||
| Línea 403: | Línea 442: | ||
| } | } | ||
| ]; | ]; | ||
| + | </code> | ||
| + | O parametrizar una ruta (por ejemplo ''/detail/11''): | ||
| + | <code> | ||
| + | { | ||
| + | path: 'detail/:id', | ||
| + | component: HeroDetailComponent | ||
| + | }, | ||
| + | </code> | ||
| + | Entonces tendremos que recoger el id dentro del componente donde se vaya a leer, para ello leemos de la url en el navegador: | ||
| + | <code javascript> | ||
| + | import { Component, OnInit, OnDestroy } from '@angular/core'; | ||
| + | import { ActivatedRoute } from '@angular/router'; | ||
| + | import { Hero } from './hero'; | ||
| + | import { HeroService } from './hero.service'; | ||
| + | |||
| + | @Component({ | ||
| + | selector: 'my-hero-detail', | ||
| + | templateUrl: 'app/hero-detail.component.html', | ||
| + | }) | ||
| + | export class HeroDetailComponent implements OnInit, OnDestroy { | ||
| + | hero: Hero; | ||
| + | sub: any; | ||
| + | |||
| + | constructor( | ||
| + | private heroService: HeroService, | ||
| + | private route: ActivatedRoute) { | ||
| + | } | ||
| + | |||
| + | ngOnInit() { | ||
| + | this.sub = this.route.params.subscribe(params => { | ||
| + | let id = +params['id']; /* convert id to int */ | ||
| + | this.heroService.getHero(id) | ||
| + | .then(hero => this.hero = hero); | ||
| + | }); | ||
| + | } | ||
| + | |||
| + | ngOnDestroy() { | ||
| + | this.sub.unsubscribe(); | ||
| + | } | ||
| + | |||
| + | goBack() { | ||
| + | window.history.back(); | ||
| + | } | ||
| + | } | ||
| </code> | </code> | ||
| + | - Necesitamos un observer de la url, para ello accedemos a la ActivatedRoute | ||
| + | - Nos aseguramos que nos subscrivimos a la ActivatedRoute en el ngOnInit y que en el ngOnDestroy nos desubscribimos. | ||
| + | - Necesitamos agregarlo al constructor | ||
| + | - En el ngOnInit nos subscribimos a los ''params'' para obtener la ''id'' de la ruta actual (ActivateRoute); luego se usará el servicio para obtener ese id concreto. | ||
| ==== Http ==== | ==== Http ==== | ||