6

में उनका सही तरीके से उपयोग कैसे करें, इसलिए मैंने कल एक प्रश्न का उत्तर दिया था, और मुझे लगता है कि मैं कोड कॉपी कर रहा था और जब तक मैं पर्यवेक्षकों में गहरी डाइविंग शुरू नहीं कर रहा था तब तक पूरी तरह से समझ नहीं पाया। मेरी समस्या यह है कि मेरे पास हमेशा मेरी जरूरतों के लिए दस्तावेज़ीकरण लगाने और खोजने में मुश्किल होती है। जिसका अर्थ यह है कि मैं अभी भी काफी हद तक भरोसा करता हूं कि अन्य लोगों ने कोड का उपयोग कैसे किया है, इसलिए मैं अवधारणाओं को बेहतर समझ सकता हूं।अवलोकन और अंगुलर 2

मैं काफी उत्कृष्ट प्रलेखन यहाँ में इसके बारे में रात पढ़ने के सबसे बिताया है https://github.com/Reactive-Extensions/RxJS/tree/master/doc

मैं वादों से अधिक विचारों और observables के पीछे की शक्ति को समझने के लिए शुरू कर रहा हूँ। मेरे पास उनके बारे में तीन-आश प्रश्न हैं;

  1. कुछ अच्छे ऑनलाइन संसाधन क्या हैं जहां मैं गहराई से खोदना शुरू कर सकता हूं?

मेरे अन्य प्रश्नों में मेरे कोड के भीतर उन्हें अधिक प्रभावी ढंग से उपयोग करने का तरीका शामिल है।

  1. मैं अपने अवलोकन योग्य के अंतिम अद्यतन मूल्य को कैसे प्राप्त कर सकता हूं और इसे एक चर के भीतर रख सकता हूं? पृष्ठ रीलोड पर चर को बनाए रखने का कोई अच्छा तरीका भी है?

    export class LocalStorage { 
        public collection$: Observable<Array<string>>; 
        private _collectionObserver: any; 
        private _collection: Array<string>; 
    
        public loggedIn$ :Observable<boolean>; 
        private _loggedinObserver: any; 
        private _loggedIn: Array<string>; 
    
        constructor() { 
        this._collection = new Array<string>; 
    
        this._loggedIn = new Array<string>; 
    
        this.loggedIn$ = new Observable(observer => { 
         this._loggedinObserver = observer; 
        }).share(); 
    
        this.collection$ = new Observable(observer => { 
         this._collectionObserver = observer; 
        }).share(); 
        } 
    
        add(value: string) { 
        this._collection.push(value); 
        this._collectionObserver.next(this._collection); 
        } 
    
        logIn(value: string){ 
        this._loggedIn.unshift(value); 
        this._loggedinObserver.next(this._loggedIn); 
        } 
    
        logout(value: string){ 
        this._loggedIn.unshift(value); 
        this._loggedinObserver.next(this._loggedIn); 
        } 
    
        load() { 
        this._collectionObserver.next(this._collection); 
        this._loggedinObserver.next(this._loggedIn); 
        } 
    } 
    

    अब जब यह मेरी पहली लोड करता है सही ढंग से गति प्रदान करता है, लेकिन अगर:

मैं अगले कुछ सवाल

@Component({ 
    selector: 'my-app', 
    providers: [FORM_PROVIDERS, RoleService, UserService], 
    inputs: ['loggedIn'], 
    directives: [ROUTER_DIRECTIVES, CORE_DIRECTIVES, LoggedInRouterOutlet], 
    template: `<body> 
       <div *ngIf="loggedIn[0]=== 'true'"> 
        <nav class="navbar navbar-inverse navbar-top" role="navigation"> 

           <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1"> 
            <ul class = "nav navbar-nav"> 
             <li> 
              <a [routerLink] = "['/RolesList']">Roles</a> 
             </li> 
             <li> 
              <a [routerLink] = "['/UserList']">Users</a> 
             </li> 
             <li> 
              <a [routerLink] = "['/UserRolesList']">User Roles</a> 
             </li> 
            </ul> 
            <ul class="nav navbar-nav navbar-right"> 
            <li> 
             <a [routerLink] = "['/Login']" (click)="logout()">Logout</a> 
            </li> 
            </ul> 
           </div> 
         </div> 
        </nav> 
       </div> 
        <div class="container"> 
         <router-outlet></router-outlet> 
        </div> 
        </body>` 
}) 
export class AppComponent{ 

    public loggedIn: Array<string> = new Array<string>(); 
    public localStorage: Array<string> = new Array<string>(); 

    constructor(private _localStorage: LocalStorage){ 
    } 

    ngOnInit(){ 
     this._localStorage.collection$.subscribe(login_trigger => { 
      this.localStorage = login_trigger; 
     }); 

     this._localStorage.loggedIn$.subscribe(to_be_or_not_to_be => { 
      this.loggedIn = to_be_or_not_to_be; 
     }); 

     this._localStorage.load(); 
    } 

    logout(){ 
     localStorage.removeItem('jwt'); 
     this._localStorage.logout('false'); 
    } 
} 

यहाँ के लिए मेरे कोड पोस्ट करने के लिए जा रहा हूँ मेरी LocalStorage वर्ग है मैं उस पृष्ठ को रीफ्रेश करता हूं जो परिवर्तनीय होल्डिंग लॉग इन में कुछ भी नहीं है, इसलिए मेनू गायब हो जाता है। इसके साथ 2 समस्याएं हैं, एक है कि मैं वास्तव में अवलोकन करने योग्य मजबूर सरणी का उपयोग करने के बजाय अद्यतन पर एक वैरिएबल को गतिशील रूप से बदलना चाहता हूं। क्या मैं केवल एक सरणी के रूप में देखने योग्य उपयोग कर सकता हूं?

  1. मैं यह पढ़ने से समझता हूं कि एंगुलर 2 घटनाओं/कार्यों को आग लगाने के लिए अवलोकनों में परिवर्तनों को देखने के लिए $ घड़ी की घटना नहीं करता है। एक समारोह या घटना को आग लगाने के लिए एक देखने योग्य देखने के लिए एक और तरीका देखने के लिए कोई और तरीका है?

मुझे पूरी तरह से मेरे कोड के लिए मेरे उत्तरों पर सवाल उठाना अच्छा लगेगा और इसे कम से कम हैकी तरीके से बेहतर तरीके से उपयोग करने का तरीका होगा। लेकिन मैं पर्यवेक्षकों/विषयों और अच्छे संसाधनों पर अच्छी समझ प्राप्त करने के लिए और भी अधिक चाहता हूं। मुझे पता है कि यह एक लंबी और व्यापक पोस्ट है, मेरे पास सिर्फ कोई भी नहीं है जिसे मैं जा सकता हूं या इनमें से किसी के साथ मदद मांग सकता हूं और आप में से कई कोणीय 2 लोग जो यहां सवालों का जवाब देते हैं, वे शानदार रूप से सहायक रहे हैं और इसे और अधिक आसान बना दिया है मुझे अवधारणाओं को समझने के लिए।

धन्यवाद!

+1

यह रास्ता बहुत व्यापक है, मैं आपको इस प्रश्न को बंद करने से पहले इसे अधिक विशिष्ट प्रश्नों में विभाजित करने की सलाह दूंगा। चूंकि संसाधनों के लिए, आप [दस्तावेज़ संस्करण 5] (https://github.com/ReactiveX/RxJS) का उपयोग करना चाहेंगे क्योंकि यह एक कोणीय 2 उपयोग करता है। [EggHead.io] (https://egghead.io/technologies/rx) में प्रतिक्रियाशील प्रोग्रामिंग के लिए बहुत अच्छे परिचय वीडियो हैं और [एनजी-बुक 2] (https://www.ng-book.com/2/) है कोणीय 2 का उपयोग करके उससे संबंधित एक अध्याय जिसमें एक उदाहरण है जो आप अपने दूसरे प्रश्न में प्राप्त करने की कोशिश कर रहे हैं। – Langley

उत्तर

5

1) मुझे लगता है कि सबसे अच्छा संसाधन मैं प्रतिक्रियाशील प्रोग्रामिंग और observables के बारे में पढ़ा वहाँ इस प्रकार हैं:

मुख्य अवधारणा का उपयोग करके अतुल्यकालिक डाटा प्रवाह बनाने के लिए है ऑपरेटरों। दो पिछले लिंक इस बारे में महान स्पष्टीकरण देते हैं।

2) वास्तव में, आपको subscribe विधि का उपयोग करके पंजीकृत कॉलबैक के माध्यम से ईवेंट होने पर सूचित किया जाएगा। यदि आप ईवेंट से जुड़े मूल्य को स्टोर करना चाहते हैं, तो यह आपके ऊपर है ...

3) $ घड़ी सुविधा के समतुल्य के संबंध में। जवाब के बाद आप मदद कर सकता है:

आप ngOnChanges हुक जब बाध्य तत्वों अपडेट किया जाता है तो आपको सूचित किया करने की अनुमति देता है।

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