用户输入数字时动态生成多个input type file组件的Angular实现问题
Angular 动态生成指定数量文件上传器实现方案
实现逻辑
- 用变量存储用户输入的上传器数量
- 监听输入变化,根据合法的输入值生成对应长度的数组
- 用
*ngFor遍历数组渲染对应数量的文件上传组件
代码实现
1. 模块配置(app.module.ts)
需要先导入FormsModule开启双向绑定能力:
import { NgModule } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; import { FormsModule } from '@angular/forms'; import { AppComponent } from './app.component'; @NgModule({ declarations: [AppComponent], imports: [BrowserModule, FormsModule], providers: [], bootstrap: [AppComponent] }) export class AppModule { }
2. 组件逻辑(app.component.ts)
import { Component } from '@angular/core'; @Component({ selector: 'app-root', templateUrl: './app.component.html', styleUrls: ['./app.component.css'] }) export class AppComponent { uploadCount: number = 0; uploaderArr: number[] = []; onCountChange(): void { // 校验输入值,仅保留非负整数 const validCount = Math.max(0, Math.floor(Number(this.uploadCount) || 0)); // 生成对应长度的数组用于遍历 this.uploaderArr = Array.from({length: validCount}, (_, idx) => idx); } }
3. 模板代码(app.component.html)
<!-- 数量输入框 --> <div> <label>上传器数量:</label> <input type="number" min="0" [(ngModel)]="uploadCount" (input)="onCountChange()" placeholder="输入整数如3" > </div> <!-- 动态渲染上传器 --> <div *ngFor="let item of uploaderArr; let i = index" style="margin: 8px 0;"> <span>文件{{i + 1}}</span> <input type="file" name="upload_{{i}}"> </div>
效果说明
输入正整数后会即时渲染对应数量的文件上传框,输入负数、非数字内容会自动判定为0,不显示上传框,不会出现异常报错。
内容的提问来源于stack exchange,提问作者Goku Vegita
相关产品推荐
相关产品推荐

