Понадобится свойство - массив данных блоков, и метод, который будет принимать количество блоков и добавлять или удалять данные, в зависимости от того, как переданное значение соотносится с текущим количеством блоков:
formData = [];
updateFormData(newLen) {
const oldLen = this.formData.length;
if (oldLen > newLen) {
this.formData.splice(newLen, oldLen);
} else if (oldLen < newLen) {
this.formData.push(...Array.from({ length: newLen - oldLen }, n => ({
/* здесь дефолтные данные блока */
})));
}
}
Инпут, задающий количество блоков - длину массива с данными блоков цепляете к нему в качестве значения, а при изменении вызываете метод обновления данных:
<input
type="number"
[ngModel]="formData.length"
(ngModelChange)="updateFormData($event)"
>
Ну и вывод блоков:
<div *ngFor="let item of formData;">
<!-- здесь создаёте input'ы, цепляете к ним через [(ngModel)] свойства item'а -->
</div>
https://stackblitz.com/edit/angular-q534id?file=sr...