मैं डिफ़ॉल्ट रूप से सभी विकल्पों का चयन करने के लिए एक मैट-विकल्प फ़िल्टर चाहता हूं। उसके लिए मैंने इस्तेमाल किया है

.setValue([1,2,3,4,5,6,7,8])

लेकिन अब मुझे एपीआई सेवा से गतिशील रूप से पारित करने के लिए सरणी की आवश्यकता है।

तो मैंने यह किया:

this.listApiService.getListOfEventTypes().subscribe(data => {
      (data as Array<any>).forEach(type => {
        this.allSelectedEventTypes.push(type.Id);
      });
    });

.setValue(this.allSelectedEventTypes);

यहां तक ​​​​कि यह वही सरणी लौटा रहा है, लेकिन अपेक्षित तरीके से नहीं फ़िल्टर डिफ़ॉल्ट विकल्पों का चयन कर रहा है।

जब मैंने कंसोल में प्रिंट करने का प्रयास किया तो मुझे आउटपुट मिला।

हार्डकोडेड सरणी:

Array(8) [ 1, 2, 3, 4, 5, 6, 7, 8 ]

गतिशील रूप से लौटा सरणी:

Array []

और जब मैं इसका विस्तार करता हूं:

[]
0: 1
​1: 2
​2: 3
3: 4
​4: 5
​5: 6
​6: 7
​7: 8
​length: 8

लेकिन यह मैट विकल्प फ़िल्टर में सभी डिफ़ॉल्ट एकाधिक चयनों को चुनने के साथ काम नहीं कर रहा है।

0
Code Toddler 18 जिंदा 2021, 21:30

1 उत्तर

सबसे बढ़िया उत्तर

आपको .setValue फ़ंक्शन को सब्सक्रिप्शन के अंदर रखना होगा।

this.listApiService.getListOfEventTypes().subscribe(data => {
  (data as Array<any>).forEach(type => {
    this.allSelectedEventTypes.push(type.Id);
  });
  this.yourVariable.setValue(this.allSelectedEventTypes);  //<-----
});

आम तौर पर एपीआई को परिणाम वापस करने में कुछ समय लगता है, इसलिए अधिकांश बार कॉल वाले फ़ंक्शन को पूरी तरह से चलाया जाएगा।

यदि आप अपने setValue को फंक्शन में वैसे ही रखते हैं जैसे आपने किया था तो यह परिणाम आने से पहले चलाया जाएगा।

0
Federico Andreoli 18 जिंदा 2021, 23:14