Pequeño tip para VSCode, para seleccionar todas las ocurrencias de una sola vez, en Windows es Ctrl + F2.
Fundamentos de TypeScript
¿Qué es Typescript?
Resumen de Typescript
Types, Type Inference y Type keyword
Clases
Interfaces
Shapes
Union types
Intersection types
Function type
Decorators: aplicación en métodos
Decorators: aplicación en clases
Decorators: aplicación en propiedades
Decorators: aplicación en parámetros
Preparando el entorno para nuestro proyecto
¿Qué es Angular?
Angular CLI y Visual Studio Code
Creando nuestro proyecto con Angular CLI
¿Qué es Firebase? Implementando Firebase en nuestro proyecto
Diferencias entre Angular, React, Vue
Desarrollo de la aplicación
Presentación de la aplicación
Creación de las interfaces
Creación e implementación de endpoints en Firebase
Creación de la tabla de jugadores
Implementación de nuevo jugador a la tabla 1
Implementación de nuevo jugador a la tabla 2
Debugging de la aplicación
Implementación de edición de un jugador de la tabla
Implementación de eliminación de un jugador en la tabla
Conclusiones
Conclusiones
No tienes acceso a esta clase
¡Continúa aprendiendo! Únete y comienza a potenciar tu carrera
Aportes 16
Preguntas 4
Pequeño tip para VSCode, para seleccionar todas las ocurrencias de una sola vez, en Windows es Ctrl + F2.
Si les sale un error de tipo “Property ‘player’ does not
exist on type ‘PlayerDialogComponent’.”
Es porque tiene que poner dentro de la clase PlayerDialogComponent un atributo player
"public player;"
Si llegan a tener el problema de que no aparece el botón de New Player Form y de que tiene mucho scroll la pagina modifiquen este estilo del body:
Antes:
body {
font: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', sans-serif;
background-color: #f69d75;
color: #555555;
}
Después
body {
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen-Sans, Ubuntu, Cantarell, 'Helvetica Neue', sans-serif;
background-color: #f69d75;
color: #555555;
}
Espero les sea util 😃
private team:any;
public player:any;
public countries = Object.keys(Country).map(key => ({ label: key, key: Country }));
public squadNumber = Object.keys(SquadNumber)
.slice(Object.keys(SquadNumber).length / 2)
.map(key => ({
label: key,
key: SquadNumber[Number(key)]
}));
Angular 12…
Cuidado con el input de leftFooted tipo checkbox, me di cuenta que se quedó con el atributo required y eso es incorrecto (se tiene que quitar). Como el jugador puede ser zurdo o no, el campo no debe ser obligatorio. Cada que pongamos a un diestro (dejando vacío el checkbox), Angular entenderá que el formulario no es válido.
Disculpen los estilos de esta aplicación donde los encuentro? ya que en el repo no están y se pierden muchas cosas.
La estructura del curso es un poco desorganizada, hay partes que se omitieron como cuando el crea la funcionalidad de Close() y el problema con el asunto del evento para cerrar el formulario.
He gastado un tiempo considerable solo solucionado problemas , aunque eso siempre pasa pero para la duración de este curso me es un poco incomodo.
Bueno en realidad en este punto hay un error en el código o en la lógica mas bien, porque cuando guardas mas jugadores, en la tabla de MY TEAM solo en la columna de players solo muestra el ultimo que has agregado y en el colección de team.players de firebase siempre se guarda el ultimo no se crea un arreglo de players.
PD: pensé que era problema en mi código pero descargue la versión que esta el Archivos y Enlaces, y el error persiste.
PD2: A alguien mas le ha pasado?
Por favor alguien tiene documentación un poco del error al que se refiere el profesor ?
Sigo impresionado de la facilidad con la que se puede enviar y recibir información de angular a firebase
Buenos días, por favor me ayudan con este error:
core.js:6210 ERROR RangeError: Maximum call stack size exceeded
Pequeño tip para VSCode, para seleccionar cierta cantidad de ocurrencias para un fragmento de código, en Windows es Ctrl + D
Excelente curso!
No sé si soy el único con el error de que, cuando agrego un segundo jugador, éste sobreescribe al primero (sólo en la tabla del equipo, no en la de jugadores).
.
Lo solucioné suscribiéndose al teamService cada que se va a agregar un jugador, para tomar el dato más actualizado del equipo desde firebse, y ahí, ya insertar el formattedTeam. El método newPlayer queda así:
.
private newPlayer(playerFormValue: any): void {
const key = this.playerService.addPlayer(playerFormValue).key;
const playerFormValueWithKey = {
...playerFormValue,
key,
};
// team needs to be updated from firebase
this.teamService
.getTeams()
.pipe(take(1))
.subscribe((teams) => {
this.team = teams[0];
const formattedTeam = {
...this.team,
players: [
...(this.team.players ? this.team.players : []),
playerFormValueWithKey,
],
};
this.teamService.editTeam(formattedTeam);
});
}
No me muestra el modal, es decir la ventana NEW PLAYER FORM, encuentro el código igual, no se que pasa, alguien me puede ayudar
<div id="open-modal" class="modal-window">
<div>
<a href="#" title="Close" class="modal-close">Close</a>
<h1>New Player Form</h1>
<div>
<form #playerForm="ngForm" novalidate (ngSubmit)="onSubmit(playerForm)">
<div class="form-group">
<label for="name">Name</label>
<input type="text" class="form-control" name="name" [ngModel]="player?.name" ngModel required />
</div>
<div class="form-group">
<label for="lastName">Last Name</label>
<input type="text" class="form-control" name="lastName" [ngModel]="player?.lastName" ngModel required />
</div>
<div class="form-group">
<label for="position">Position</label>
<select class="form-control" name="position" [ngModel]="player?.position" ngModel required>
<option *ngFor="let position of squadNumber" [value]="position.key">{{ position.label }}</option>
</select>
</div>
<div class="form-group">
<label for="weight">Weight</label>
<input type="text" class="form-control" name="weight" [ngModel]="player?.weight" ngModel required />
</div>
<div class="form-group">
<label for="height">Height</label>
<input type="text" class="form-control" name="height" [ngModel]="player?.height" ngModel required />
</div>
<div class="form-group">
<label for="nationality">Nationality</label>
<select class="form-control" name="nationality" [ngModel]="player?.nationality" ngModel required>
<option *ngFor="let nationality of countries" [value]="nationality.key">{{ nationality.label }}</option>
</select>
</div>
<div class="form-group">
<label for="leftFooted">Left Footed</label>
<input type="checkbox" class="form-control checkbox" name="leftFooted" [ngModel]="player?.leftFooted" ngModel required />
</div>
<div class="submit-container">
<button type="submit">Submit</button>
</div>
</form>
</div>
</div>
</div>
Los aportes, preguntas y respuestas son vitales para aprender en comunidad. Regístrate o inicia sesión para participar.