2017-10-29 24 views
7

मेरा प्रश्न से संबंधित है से प्रेषण करने के लिए निर्माता का उपयोग करना।क्रम में दुकान और ngOnInit पर चयन करने के लिए आदेश में</strong> & <strong>भेजने ngrx की दुकान से</strong> का चयन <strong>को दुकान

की आधिकारिक उदाहरण app से निम्नलिखित कोड पर नजर डालते हैं:

export class CollectionPageComponent implements OnInit { 
    books$: Observable<Book[]>; 

    constructor(private store: Store<fromBooks.State>) { 
    this.books$ = store.select(fromBooks.getBookCollection); 
    } 

    ngOnInit() { 
    this.store.dispatch(new collection.Load()); 
    } 
} 

मैं समझने के लिए constructor से से ngOnInit और चयन भेजने के चुनाव के लिए प्रेरित करना चाहते हैं।

क्या कोई भी स्पष्टीकरण प्रदान कर सकता है?

पीएस वैसे, उपरोक्त ngrx उदाहरण ऐप से नमूना कोड है जो यहां पाया जा सकता है: https://github.com/ngrx/platform/blob/master/example-app/app/books/containers/collection-page.ts

+0

आपको भ्रमित करने वाला क्या लगता है? कुछ करने के कई तरीके हैं। यह गलत तरीका नहीं है।आप एक रिज़ॉल्वर के साथ ऐसा कर सकते हैं, या http मतदान के साथ जो आपके ऐप की शुरूआत या कई अन्य तरीकों से शुरू होता है ... – notANerdDev

उत्तर

-1

मेरी राय में मुख्य कारण चिंताओं को अलग करना है। निर्माता यह स्थान है कि आप सभी निर्भरताओं को परिभाषित करते हैं। तो इस मामले में स्टोर प्राप्त करना और इसका एक टुकड़ा चुनना।

हालांकि किसी क्रिया को प्रेषण करना तर्क का हिस्सा है जिसे निर्भरता से अलग किया जा सकता है (यदि संभव हो)।

कई निर्भरताओं और कई कार्रवाइयों वाले वर्ग के बारे में सोचें। यह चीजों को अलग रखने में मदद करता है। जो भी कक्षा पढ़ेगा वह हमेशा रचनाकार को देख सकता है कि निर्भरता क्या है और किसी भी अन्य तर्क के साथ obfuscated नहीं है।

+0

हैलो व्हीलर। क्या आप निश्चित हैं कि यह मामला है? क्या यह कोणीय घटकों के जीवन चक्र से संबंधित नहीं है और 'कन्स्ट्रक्टर' और 'ngOnInit' के बीच का अंतर है? – balteo

+0

यह निर्भर हो सकता है लेकिन मैंने बिना किसी समस्या या दुष्प्रभाव के पहले कन्स्ट्रक्टर में प्रेषण कार्यों का भी उपयोग किया। – wheeler

0

जब कक्षा को तत्काल बनाया जाता है और कक्षा के खेतों के उचित प्रारंभिकरण सुनिश्चित करता है तो कन्स्ट्रक्टर निष्पादित किया जाता है। यह वह जगह है जहां कोणीय प्रदाताओं को हल करता है जो आप अपने कन्स्ट्रक्टर में तर्क के रूप में पारित कर सकते हैं।

एनजीओएनआईएनआईटी लाइफसाइकिल हुक को पहली बार डेटा-बाध्य गुणों की जांच के बाद बुलाया जाता है (इनपुट घटक के आउटपुट)। अधिक विस्तृत स्पष्टीकरण के लिए this question देखें।

प्रेरणा निर्माता में ngrx की दुकान से का चयन करके और ngOnInit से भेजने जहां तक ​​मैं यह समझ के रूप में के लिए, कि का चयन का हिस्सा आप घटक वर्ग आरंभ है। चूंकि this.books$ एक पर्यवेक्षण योग्य है, इसलिए यह इसे कन्स्ट्रक्टर में प्रारंभ करने में समझ में आता है, इसलिए यह सृजन के तुरंत बाद उपयोग के लिए तैयार है। bookCollection.Load() मानते हैं कि this.books$ पर से पहले एक अंतिम मूल्य उत्सर्जित होने से पहले this.books$ पर एक मान निकलता है।

चूंकि आप this.books$ पर उत्सर्जित मानों को चाहते हैं, तो यह एनजीओएनआईएनआईटी में कार्रवाई को समझता है। इस तरह आप निश्चित कर सकते हैं कि this.books$ प्रारंभ किया गया है।

This answer इसी तरह के प्रश्न के लिए भी मदद की जा सकती है।

संबंधित मुद्दे