angularjs 使用ExpressionProperties访问不同的模型模板选项

gcuhipw9  于 2022-10-31  发布在  Angular
关注(0)|答案(1)|浏览(163)

首先,我想说的是,Angular Formly对于像我这样的新手来说是一个非常棒的库。我不是一个Web开发人员,但是我发现这个库很直观,功能也很强大。
但是,我确实需要有关使用表达式属性的帮助。
我有一个模型库,其中包含库项目,例如:

{
  "itemId":"STX001",
  "title":"Grey Wolf",
  "category":"White", etc.
}
{
  "itemId":"STX002",
  "title":"Noble Black",
  "category":"Black", etc.
}
etc.

我也有一个formly表单,它在顶部字段中使用ui-select来查找库中的所有值,选择其中一个(我将称之为Item),然后用Items属性填充表单中的其余字段,然后将表单提交到Catalogue模型。
我面临的问题是我不能从其他字段中引用Item的属性。我尝试使用expressionProperties,但只能提取valueProp的值(它是uniqueID),然而我在Item.title、Item.category等之后。
代码如下:

{
 //This is form fields for creating a new Catalogue entry
 key: 'libraryId',
 type: 'ui-select',
 templateOptions: {
    label: gettextCatalog.getString('Search Library'),
    options: [],
    valueProp: 'itemId',
    itemTitle: 'title',
    itemCategory: 'category',
    labelProp: 'title',
    focus: true,
    placeholder: 'Start typing keywords..'
 },
 controller: function ($scope) {
   getLibrary().then(function(data){
       $scope.options.templateOptions.options = data;
       return data;
   });
 }
}
{
 key: 'title',
 type: 'input',
 templateOptions: {
    label: gettextCatalog.getString('Name'),
    required: true
 },
 expressionProperties : {
   //This is what i'm trying to achieve but doesn't work
   'templateOptions.placeholder' : 'model.libraryId.itemTitle'
 }
},
evrscar2

evrscar21#

使用提供的回调函数

expressionPropertyObj = {
                    'templateOptions.required': (model, formState: any, field: FormlyFieldConfig) => {
                        console.log('model',model);
                        console.log('state',formState);
                        console.log('field',field);

                    },

相关问题