Я использую Angular 6, и у меня есть ngbCarousel , в который я хочу добавить фотографии одним нажатием кнопки.
Я использую ngFor
для создания HTML карусели.
<ngb-carousel #carousel *ngIf="images">
<ng-template ngbSlide *ngFor="let im of images; let i = index">
<img [src]='im.link' >
<div>
<input type="text" value={{im.name}} >
<input type="text" value='description of img' >
<input type="text" value='copyright owners' >
<button type="button" (click)='deletepic(i)'>delete</button>
</div>
</ng-template>
</ngb-carousel>
<button type="button" (click)='addpic()'>add</button>
<button type="button" (click)='last()'>last</button>
Массив images
, содержащий JSON, - это images= [{'link':'https://picsum.photos/900/500/?image=5','name':'first'},{'link':'https://picsum.photos/900/500/?image=574','name':'second'},{'link':'https://picsum.photos/900/500/?image=547','name':'third'}];
, и при нажатии addpic
в массив добавляется еще один json.
addpic(){
this.images.push({'link':'https://picsum.photos/900/500/?image=7','name':'added one'});
this.last() ;
}
Также он должен заставить карусель показывать последнюю добавленную фотографию. В соответствии с API я должен использовать select
, чтобы перейти к слайду по его идентификатору, а идентификатор - это образец ngb-slide-0
.
Итак, last
содержит
last(){
let slide = 'ngb-slide-'+String(this.images.length-1);
this.carousel.select(slide);
}
Последнее фото обычно добавляется в карусель
Проблема в том, что last
не будет работать при вызове из addpic
. Это никогда не идет к последней фотографии, даже если фотография добавлена. Если я поставлю
let slide = 'ngb-slide-'+String(this.images.length-1);
this.carousel.select(slide);
из last
в addpic
все равно не будет работать. Это всегда идет ко второму последнему фото (если у меня есть 3 фото, оно всегда идет к третьему, после добавления 4-го)
Но это будет работать , если я нажму последнюю кнопку или использую стрелки в интерфейсе карусели.
Это заставляет меня думать, что каким-то образом HTML или массив не "обновляются", когда в машинописном коде вызывается last
, но каким-то образом кнопки обновляют / создают HTML, необходимый для показа нужной фотографии?
Я не знаю, что это такое, но я почти уверен, что теперь это связано с обновлением html / typcript. Я думаю, что это угловая проблема, а не проблема ngbCarousel. Я не знаю, как отладить или продолжить.
Пожалуйста, совет. Спасибо