Ваш шаблон:
<div *ngFor="let billingItem of billings" class="LG_invoice-item" #billing (click)="setCurrentBilling(billingItem)" >
<div class="LG_form-title" (click)="billing.value = !billing.value">
{{billingItem.month}} {{billingItem.years}}
</div>
<app-billing *ngIf="billing.value" ></app-billing>
</div>
Итак, у вас есть родительский div
и вложенный, оба с прослушивателем щелчков.
Первый, который должен быть выполнен, является внутренним:
(click)="billing.value = !billing.value"
, который делает шаблон для повторного рендеринга, показывая теперь новый элемент:
<app-billing *ngIf="billing.value" ></app-billing>
Так что ngOnInit этого элемента выполняется:
ngOnInit() {
this.billingsService.log();
setTimeout(() => {
this.billingsService.log();
}, 0);
//console.log('currentelem: ', );
}
Здесь вы еще не установили current
. И затем, после того, как этот первый цикл завершен, в действие вступает другой обработчик щелчков:
(click)="setCurrentBilling(billingItem)"
И после этого будет разрешен setTimeout
из первого click
.
<div *ngFor="let billingItem of billings" class="LG_invoice-item" #billing
(click)="billing.value = !billing.value;setCurrentBilling(billingItem)" >
<div class="LG_form-title">
{{billingItem.month}} {{billingItem.years}}
</div>
<app-billing *ngIf="billing.value" ></app-billing>
</div>
Класс загрузки файла CodeIgniter сделает это для Вас. Запись в их руководстве пользователя объясняет, а также я мог, таким образом, я собираюсь указать на Вас там.
По существу необходимо было бы просто изменить контроллер, что они должны там включать немного, куда Вы помещаете URL файла в базу данных, которую можно выполнить легко при помощи $this-> загрузка-> данные () и извлекающий [full_path] от полученного массива и затем отправляющий его в модель, которая обрабатывает вход базы данных.
используйте form_open_multipart (), а не form_open ()