【发布时间】:2020-06-05 07:04:19
【问题描述】:
我正在处理旧版 Angular Formly 表单,并且我有一个下拉列表的 select formly-template 字段:
<select class="form-control" placeholder="choose ..." ng-model="model[options.key]"
ng-options="option.value as option.name group by option.group for option in options.templateOptions.options">
</select>
不幸的是,我正在更新的应用程序有很多静态选项示例,但我需要将其绑定到动态列表。
我设法添加了一个新的字段类型来扩展选择,并尝试将 Desc 映射到名称,将代码映射到值,但它没有像我希望的那样工作。
formlyConfigProvider.setType({
name: 'specialselect',
templateUrl: getFieldTemplateUrl('select'),
wrapper: commonWrappers,
defaultOptions: {
defaultValue: "",
expressionProperties: {
'templateOptions.options': function ($viewValue, $modelValue, scope) {
if (!scope.model.SomeObject.ItemCollection) {
return [];
}
var defaultOption = [{ name: 'Choose ...', value: '' }];
return _.union(defaultOption, _.map(scope.model.SomeObject.ItemCollection, function (value) {
return { name: value.Desc, value: value.Code };
}));
}
}
}
});
问题 1:我不确定为什么我在我的值中看到 string:JEEP 出于某种原因,而不仅仅是 JEEP。
更新:所以我发现了其他关于 Angular 做一些事情来创建唯一键的帖子,这就是为什么它在值前面加上类型的原因。但我不希望这样,因为我将不得不在保存我的对象之前将其剥离。剥离值类型的最有效方法是什么?或者有没有更好的方法来定义我的领域,使其没有这种行为。
问题 2:如何使这个动态化,以便我可以传入包含我的项目集合的模型属性。而不是使用:
scope.model.SomeObject.ItemCollection
【问题讨论】:
标签: angular-formly