एक कोणीय ऐप में, मैं एक ऑपरेटर/आरएक्सजे के साथ एक अवलोकन योग्य बनाने का एक तरीका ढूंढ रहा हूं लेकिन मुझे समझ में नहीं आता कि यह कैसे करें।

मुझे जो चाहिए वह एक (बल्कि सरल) फ़िल्टर सुविधा है, लेकिन मैं इसे काम नहीं कर सका।

स्रोत 1 एक सरणी है। स्रोत 2 एक टेक्स्टबॉक्स है (सरणी को फ़िल्टर करने के लिए)।

this.source1 = of (['abc', 'aef', 'ahi', 'jkl', 'xyz']);
this.filterBox = new FormControl();

combineLatest(
      source1,
      this.filterBox.valueChanges,
      (items, filter) => {
        console.log(items, filter);
        return items.filter(item => item.includes(filter));
      }
    ).subscribe(val => console.log(val));

यह शुरुआत में पूरे सरणी को आउटपुट करना चाहिए, जब फ़िल्टरबॉक्स खाली है और इसलिए कुछ भी उत्सर्जित नहीं कर रहा है।

मैंने कॉम्बिनेशन की कोशिश की, लेकिन प्रलेखन कहता है:

जब तक प्रत्येक स्रोत वेधशाला ने कम से कम एक वस्तु का उत्सर्जन किया हो

साथ ही साथLatestFrom.

यहां किस ऑपरेटर का उपयोग किया जाना चाहिए?

2
Wolf359 19 फरवरी 2019, 07:17

1 उत्तर

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

अवलोकन योग्य प्रारंभिक मान देने के लिए आप startWith ऑपरेटर का उपयोग कर सकते हैं। कुछ इस तरह:

combineLatest(
 source1,
 this.filterBox.valueChanges.pipe(startWith("")),
 (items, filter) => {
  console.log(items, filter);
  return items.filter(item => item.includes(filter));
 }
).subscribe(val => console.log(val));

यहां से और जानें https://coryrylan.com/blog/ सब्स्क्राइबिंग-टू-मल्टीपल-ऑब्जर्वेबल्स-इन-एंगुलर-कंपोनेंट्स

4
Shohel 19 फरवरी 2019, 04:36