Всякий раз, когда iframe добавляется и применяется атрибут src, он запускает действие загрузки аналогично созданию тега изображения через JS. Поэтому, когда вы удаляете и добавляете их, они являются совершенно новыми объектами, и они обновляются. Его вид того, как window.location = window.location
перезагрузит страницу.
Единственный способ, которым я знаю переставить iframes
, - через CSS. Вот пример, который я собрал, показывая один способ справиться с этим с помощью flex-box
: https://jsfiddle.net/3g73sz3k/15/
Основная идея - создать a flex-box
, а затем определить определенный порядок для iframes, используя атрибут order на каждой оболочке iframe.
Как вы можете видеть в скрипте JS, эти стили order
являются встроенными, чтобы упростить flip
, поэтому поверните iframes
.
Я получил решение из этого вопроса StackOverflow: Поменять место DIV с помощью CSS только
Надеюсь, что помогает.
Здесь есть хорошее и краткое объяснение с примером: https://alligator.io/angular/reactive-forms-formarray-dynamic-fields/
Попробуйте это:
<div formArrayName="businessNotes">
<h3>business notes</h3> <button (click)="addBusinessNote()">Add business note</button>
<div *ngFor="let note of businessNotes.controls; let i=index" >
<label>
note: {{i + 1}}
<input type="text" [formControl]="note.get('text')">
</label>
</div>
</div>
</div>
Я думаю, что больше всего расстраивается из-за части [formControlName] = "text". Не уверен, какая форма группы под. Я думаю, что есть несколько способов обойти это, но я считаю, что привязка к formControl - самая прямолинейная работа.
Я думаю, что в вашем методе добавления также может быть ошибка. Я не думаю, что вам нужен array.controls здесь, вы можете напрямую перейти к массиву.
Удачи!