1

У меня есть 3 наблюдаемых массива в ViewModel;Параметр в конструкторе пользовательского компонента всегда не определен

groupedCustomFields: ko.ObservableArray<any> = ko.observableArray([]); 
customFieldsForAdvSearch: ko.ObservableArray<any> = ko.observableArray([]); 
countries: ko.ObservableArray<Country> = ko.observableArray([]); 

В конструкторе ViewModel я инициализируюсь их с данными из некоторого API запросов

constructor() { 
//some other operations 

this.loadCustomFields(); 
this.loadCountries(); 
} 

private loadCustomFieldsForAdvSearch() { 
    dataService.Management.getCustomFields() 
     .done(response => { 
      this.groupedCustomFields(sortBy(new CustomFieldsService().getGroupedFields(response.collection), i => i.displayOrder)); 
      this.customFieldsForAdvSearch(response.collection 
       .filter(l => defaultFields.indexOf(l.name) === -1) 
       .map(l => { 
        return { 
         fieldName: l.name, 
         displayName: l.display, 
         displayOrder: l.order, 
         value: '' 
        }; 
       }) 
       .sort((x, y) => x.displayOrder - y.displayOrder)); 
     }); 
} 

private loadCountries() { 
    dataService.Management.getCountriesWithStates() 
     .done(countries => { 
      this.countries(countries); 
     }); 
} 

Это observableArrays Переходит к моему заказному компоненту:

<component1 params="{ 
    customFields: customFieldsForAdvSearch, 
    groupedCustomFields: groupedCustomFields, 
    countries: countries 
    }"> 
</component1> 

Проблемы: В конструкторе component1groupedCustomFields всегда не определено, даже если customFields и countries в порядке.

constructor(params: any) { 
    this.customFields = params.customFields; 
    this.groupedCustomFields = params.groupedCustomFields;//undefined 
    this.countries = params.countries; 
} 

Почему это происходит? Как я должен это решить?

+0

Рассматривая код и теги, мы можем предположить, что это вопрос относительно нокаута вправо? –

+0

@ R.DarioDuarte, да, я добавил тег для этого :) Или лучше добавить его к вопросу? – demo

+0

Hey @demo Я просто заметил, что вам не хватает запятой на вашем вызове component1, сразу после customFields, я только что отредактировал ваш вопрос, но это может быть связано с вашей неопределенной проблемой, пожалуйста, проверьте, добавляет ли это запятая –

ответ

1

Это был ваш код:

<component1 params="{ 
    customFields: customFieldsForAdvSearch 
    groupedCustomFields: groupedCustomFields, 
    countries: countries 
    }"> 
</component1> 

вас отсутствует запятая на вашем вызове компонента, просто добавьте его и он должен работать, это общая проблема, когда вы получаете неопределенные параметры на вашем ViewModel

<component1 params="{ 
    customFields: customFieldsForAdvSearch, 
    groupedCustomFields: groupedCustomFields, 
    countries: countries 
    }"> 
</component1> 

 Смежные вопросы

  • Нет связанных вопросов^_^