求解:获取数据后,渲染表单的categories,表现不符合预期
来源:8-5 本章实战上

苏子晨
2017-12-01
首先,我把创建categories复选框数组的业务抽象了出来:
private buildCategories(init?:boolean): Array<FormControl> { let formArray = []; this.categories.forEach(categorie => { // 判断是否需要初始化 if (!init) { formArray.push( new FormControl(this.stock.categories.indexOf(categorie) != -1) ) } else { formArray.push( new FormControl(false) ) } }); return formArray; }
表单初始化时,复选框的设置:
categories: this.fb.array( this.buildCategories(true) )
此时复选框全部为未选中,符合预期;
获取数据后reset表单时是这样设置的:
// 参数为获取到的数据 resetForm(stock:Stock) { this.stock = stock; this.form.reset({ name: stock.name, code: stock.id, price: stock.price, categories: this.buildCategories(), desc: stock.desc }); }
正确结果是只有两项是选中的,然而结果变为了全部选中!
这是怎么回事?
写回答
1回答
-
苏子晨
提问者
2017-12-01
解决了,没仔细看视频。
原来表单reset时复选框只需要传入数组就行了,不需要传入FormControl,
不太明白为什么
00
相似问题