2016-08-18 26 views
10

प्रदर्शन और "कोणीय तरीके" के लिए बेहतर क्या है: दृश्य में कई एसिंक पाइप या घटक में एक ग्राहक है जो डिस्ट्रॉय पर सदस्यता रद्द कर रहा है?कोणीय 2: कई Async पाइप बनाम एक सदस्यता लें

उदाहरण:

@Component({ 
    template: `<div> {{ post.title }} {{ post.author.name }} {{ post.category.name }} </div>` 
    ... 
    }) 
class AppComponent { 
    public post: Post; 
    public postSubscription; 

    ngOnInit() { 
    postSubscription = someObservable.subscribe((post) => { 
     this.post = post; 
    }) 
    } 

ngOnDestroy() { 
    postSubscription.unsubscribe(); 
} 
} 

या

@Component({ 
    template: `<div> {{ postTitle | async }} {{ postAuthorName | async }} {{ postCategoryName | async }} </div>` 
    ... 
    }) 
class AppComponent { 
    public postTitle: Observable<string>; 
    public postAuthorName: Observable<string>; 
    public postCategoryName: Observable<string>; 

    ngOnInit() { 
    this.postTitle = someObservable.pluck('title'); 
    this.postAuthorName = someObservable.pluck('author', 'name'); 
    this.postCategoryName = someObservable.pluck('category', 'name'); 
    } 
} 

उत्तर

3

का उपयोग | async पाइप और अधिक कुशल है, क्योंकि कोणीय परिवर्तन के बारे में अधिसूचित हो जाता है। पहले उदाहरण के साथ बाइंडिंग प्रत्येक परिवर्तन पहचान चक्र की जांच की जाती है।

+0

लेकिन अगर मैं 'ChangeDetection' को 'ChangeDetectionStrategy.OnPush' में संशोधित करता हूं और सब्सक्राइब ब्लॉक में मैं' changeDetector.markForCheck() 'का उपयोग करता हूं? – dakolech

+0

तो यह शायद एसिंक पाइप का उपयोग करने जैसा ही है। –

0

यह एक अच्छा सवाल है। मैं अक्सर एक ही अवलोकन के लिए एकाधिक एसिंक पाइप का उपयोग करने के निर्णय में आया, बनाम ऑनइनिट बना रहा हूं और डेस्ट्रॉय पर सदस्यता रद्द कर रहा हूं।

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