在Angular4应用程序中工作,我有一个旋转木马,我已经展示了受欢迎的产品。在我的情况下,在默认视图中我显示了3个产品,当我点击左或右按钮时它将显示另外3个产品。 目前我有6个产品(3 + 3)都是静态值。
问题:
当我通过静态代码在滑块中添加另外一个或多个产品时,它会生成一行新的幻灯片。
我尝试了一些例子,没有什么对我有用。
我想要做的是如果我在旋转木马中添加更多产品,旋转木马必须将所有产品显示为普通幻灯片。
注意:现在我已经给出了静态值,实际上在我的项目中,我将绑定API响应中的所有产品,包括图像路径,产品名称,价格,隐藏ID。
我在那里创建了一个stackblitz文件,我保留了所有的静态代码。
https://stackblitz.com/edit/angular-mn29mi?file=app%2Fapp.component.html
用于绑定API产品的动态代码。
<div class="col-sm-4" *ngFor="let slider of productData; let i = index">
<div class="card">
<div class="card-img-top card-img-top-250 one" >
<img class="img-fluid" [src]="slider['PRODUCT_IMAGE']" alt="Carousel 1">
<img routerLink="/my-cart" (click)="getProductName(Pname1)" class="img-fluid two" [src]="slider['PRODUCT_IMAGE_ONHOVER']" alt="Carousel 1">
</div>
<div class="card-block pt-2">
<div class="col-sm-12 text-center card-text">
<span>{{slider.PRODUCT_NAME}}</span>
<br>
<input type="hidden" value="{{slider.PRODUCT_ID}}" #Pname1>
<br>
<span>{{slider.PRODUCT_PRICE}}</span>
</div>
</div>
</div>
</div>
请帮我动态绑定API中的产品,并在产品数量增加时使滑块不会生成新行。
组件代码:
export class LandingpageComponent {
product_Name: any;
productData: any;
sliderPaths: any;
sideMenuSliders : any;
slider_Active_Item: any;
side_Menu_Active_Item : string;
slider_Sliding_Item : any;
side_Menu_Slider_Image : any;
constructor(private CartdataService: CartdataService, private router: Router,) {
this.router.events.subscribe(
() => window.scrollTo(0, 0) );
}
chunks(array, size) {
let results = [];
results = [];
while (array.length) {
results.push(array.splice(0, size));
}
return results;
}
getProductName(Pname: any) {
this.CartdataService.get_Product(Pname.textContent);
}
ngOnInit() {
this.CartdataService.get_New_Products().subscribe(
data => {
this.productData = data
});
}
}
答案 0 :(得分:2)
在这里,您需要做的就是将您的数据阵列块化为3个部分,然后以这种方式循环两次。
组件方:
ngOnInit() {
this.CartdataService.get_New_Products().subscribe(
data => {
this.productData = this.chunks(data,3);
});
}
chunks(array, size) {
let results = [];
results = [];
while (array.length) {
results.push(array.splice(0, size));
}
return results;
}
模板方:
<div class="row row-equal carousel-item m-t-0" *ngFor="let chunkProducts of productData;">
<div class="col-sm-4" *ngFor="let slider of chunkProducts;">
<div class="card">
<div class="card-img-top card-img-top-250 one" >
<img class="img-fluid" [src]="slider['PRODUCT_IMAGE']" alt="Carousel 1">
<img routerLink="/my-cart" (click)="getProductName(Pname1)" class="img-fluid two" [src]="slider['PRODUCT_IMAGE_ONHOVER']" alt="Carousel 1">
</div>
<div class="card-block pt-2">
<div class="col-sm-12 text-center card-text">
<span>{{slider.PRODUCT_NAME}}</span>
<br>
<input type="hidden" value="{{slider.PRODUCT_ID}}" #Pname1>
<br>
<span>{{slider.PRODUCT_PRICE}}</span>
</div>
</div>
</div>
</div>
</div>
<强> WORKING DEMO 强>