Bonjour à tous,
j'ai une appli en angular où mon app.componet.html est le suivant
Code html : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 <div class='container'> <div class='row'> <div class="col-md-6"><i class="fa fa-shopping-cart"></i><span > 0 article <a routerLink="basket">Basket</a> <a routerLink="product">Product</a> <a routerLink="home">Home</a> </span></div> </div> <div class='row'> <router-outlet></router-outlet> </div> </div>
est mes routes sont les suivantes
Sur la page des produits(produit.component.html), j'ai une tableau affichant les produits et leurs prix avec un bouton permettant d'ajouter le produit sélectionné dans le panier et une page panier.component.html est créé(banner.component.html)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 import { NgModule } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; import { FormsModule } from '@angular/forms'; import { RouterModule, Routes, Router } from "@angular/router"; import { AppComponent } from './app.component'; import { HelloComponent } from './hello.component'; import { ProductComponent } from './product/product.component'; import { BannerComponent } from './banner/banner.component'; import { HomeComponent } from './home/home.component'; const routes: Routes = [ { path: "home", component: HomeComponent }, { path: "", component: HomeComponent }, { path: "product", component: ProductComponent }, { path: "banner", component: BannerComponent } ]; @NgModule({ imports: [ BrowserModule, FormsModule, RouterModule.forRoot(routes) ], declarations: [ AppComponent, HelloComponent, ProductComponent, BannerComponent, HomeComponent ], bootstrap: [ AppComponent ] }) export class AppModule { }
produit.comonent.html
produit.component.ts
Code html : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 <table class="table table-striped table-borderless"> <thead> <tr> <th scope="col"><a #categ1 [attr.data-cat]="ax" (click)="getMyCategory(categ1.dataset.cat)" routerLinkActive="active" class="btn btn-light" role="button">AXELLES</a></th> <th scope="col"><a #categ2 [attr.data-cat]="bret" (click)="getMyCategory(categ2.dataset.cat)" routerLinkActive="active" class="btn btn-light" role="button">BRETINIS</a></th> </tr> </thead> <tbody> <tr *ngFor="let prod of products.product; let index=index"> <td class="align-middle">{{prod.name}}</td> <td class="align-middle">{{ prod.price}}</td> <td class="align-middle"><button type="button" class="btn btn-secondary">Add product to banner</button></td> </tr> </tbody> </table>
Ma question comment faire pour incrémenter la valeur de l'article chaque fois qu'on clique sur le bouton d'un produit donnée sur le tableau(page : produit.component.html) sachant le l'article et dans la page (app.component.html) voir code ci-dessous.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80 import { Component, OnInit } from '@angular/core'; import { Router } from '@angular/router'; import { of } from 'rxjs'; import { Observable,from } from 'rxjs'; import { map, filter } from 'rxjs/operators'; const CATEGORIES = [ {id: 1, name: 'AXELLES', product: [ {id: 1,name:"AT", price: 2.50}, {id: 7,name:"CUATE", price: 1.20}, {id: 10,name:"BART", price: 2.30}, {id: 16,name:"TOME", price: 4.50} ] }, {id: 1, name: 'BRETINIS', product: [ {id: 5,name:"MONERTI", price: 2.50}, {id: 3,name:"HUNE", price: 1.20}, {id: 14,name:"LARUT", price: 2.30}, {id: 19,name:"GRATE", price: 4.50} ] } ]; @Component({ selector: 'product', templateUrl: './product.component.html', styleUrls: [ './product.component.css' ] }) export class ProductComponent implements OnInit { products; ax = 'AXELLES'; bret = 'BRETINI'; constructor( private router : Router) { } ngOnInit(): void { this.getCategories().subscribe(data=>{ this.products = data; console.log("products : ",this.products); },err=>{ console.log("Erreur retourne : ",err); }); } getCategories() { return of(CATEGORIES); } getCategory(id: number | string) { return this.getCategories().pipe( // (+) before `id` turns the string into a number map(categories => categories.find(categorie => categorie.id === +id)) ); } getCategoryByName(name: string){ return this.getCategories().pipe( map(categories => categories.filter(cat => cat.name === name)) ) } getMyCategory(catName:string) { console.log("category name : "+catName); } } type MyArrayType = Array<{id: number, price: number, name: string}>; export class Category { constructor(public id: number, public name: string, public product: MyArrayType) { } }
Ensuite comment remplir la banner.component.html (listant le produit sélectioné sur un tableau par le client et lui donner la possibilité de supprimer ou d'ajouter le produit depuis la page du panier (banner.component.html), tout en mettant à jour le nombre d'article en haut de la page et sachant que cette valeur se trouve sur la page app.component.html).
J'ai aussi créé un lien de mon code sur stackblit : http://stackblitz.com/edit/angular-ivy-4er2hh
merci de vos réponses
Partager