Aún no tienes acceso a esta clase

Crea una cuenta y continúa viendo este curso

Solicitudes PUT y PATCH

6/23
Recursos

Aportes 6

Preguntas 2

Ordenar por:

¿Quieres ver más aportes, preguntas y respuestas de la comunidad? Crea una cuenta o inicia sesión.

Yo hice esta solución que se actualice tanto en la sección de show cart como en pantalla generar
<updateProduct(){
    const changes: UpdateProduct = {
      title: 'Nuevo title',
      description: 'Esta es un prueba',
    }
    const id = this.productChosen.id;
    this.productsService.update(id,changes).subscribe(data =>{
      const productIndex = this.products.findIndex(
        item =>item.id ==this.productChosen.id
      );
      this.products[productIndex] = data;
      this.productChosen = data;
    })
  }> 

Pasa solucionar el problema de actualizar el producto en detalle solo hay que actualizar la variable productChosen con data.

updateProduct(){
    const changes = {
      title: 'Nuevo titulo klk',
    }
    const id = this.productChosen.id;
    this.productService.update(id,changes)
    .subscribe(data => {
      console.log('Updated:', data);
      const productIndex = this.products.findIndex(item => item.id === this.productChosen.id);
      this.products[productIndex] = data;
      this.productChosen = data;
    })
    
  }

Si siguieron mi consejo de separar el detalle de producto en un componente nuevo, puedes hacer las siguientes modificaciones para que la información se actualice cuando actualices el producto:

product-detail.component.ts

  @Output() productUpdated = new EventEmitter<Product>();

updateProduct(id: string){
    const changes: UpdateProductDTO = {
      title: 'Producto Editado v2'
    };
    this.productsService.update(id, changes)
    .subscribe(data=>{
      this.product = data;
      this.productUpdated.emit(this.product);
    })
  }

products.component.html

<app-product-detail
            *ngIf="productChosen"
            [product]="productChosen"
            (productUpdated)="onUpdatedProduct($event)"
        ></app-product-detail>

products.component.ts

  onUpdatedProduct(data:Product){
    const productIndex = this.products.findIndex(item => item.id === data.id)
    this.products[productIndex] = data;
  }

No se que rayos hice pero no tuve la necesidad de hacer nada más, el productChosen y el array se actualizaron solos :V

Para solucionar actualizar producto

 updateProduct() {
    const changes = {
      title: 'Nuevo Producto',
    }

    const id = this.product.id;
    this.productsService.update(id, changes).subscribe(
      (product: Product) => {
        const productId = this.products.findIndex(p => p.id === id);
        this.products[productId] = product;
        this.product = product;
       console.log(product);
    });

  }

Me ha gustado la forma en que se definen las interfaces con el uso de la palabra Partial y de esta manera todos los campos del objeto son opcionales.