2016-01-15 9 views
7

सेटडेट विधि का उपयोग करके संशोधित दिनांक वस्तुएं टेम्पलेट में अपडेट नहीं हो रही हैं।Angular2 में दिनांक ऑब्जेक्ट्स के साथ परिवर्तनों का पता कैसे लगाएं?

टेम्पलेट में:

<p>{{date | date:'mediumDate'}}</p> 

घटक में:

nextDay(){ 
    this.date.setDate(this.date.getDate()+1); 
    } 

लेकिन जब मैं nextDay समारोह, टेम्पलेट नहीं है नया मान के साथ अद्यतन कहते हैं।

एक ही रास्ता मैं परिवर्तन का पता लगाने मिल सकता है वर्किंग इस कर रहा था:

nextDay(){ 
    var tomorrow = new Date(); 
    tomorrow.setDate(this.date.getDate()+1); 
    this.date = tomorrow; 
    } 

वहाँ एक बेहतर तरीका यह एक ही कार्य को पूरा करने हैं?

+2

'तारीख' पाइप शायद स्टेटलेस है, इसलिए इसे 'दिनांक' इनपुट संपत्ति परिवर्तन देखने की आवश्यकता है, या पाइप फिर से निष्पादित नहीं होगा। जैसा कि @jadesdev ने अपने उत्तर में उल्लेख किया है, चूंकि 'तारीख' एक वस्तु है, और कोणीय केवल संदर्भ जांच है, आपको संदर्भ को रीसेट करने की आवश्यकता है (एक नई/अलग वस्तु पर)। –

+1

मैंने इसे अभी पाइप के बिना एक शॉट दिया, और इसका एक ही परिणाम। यदि आप तिथि को बदलते हैं तो यह टेम्पलेट परिवर्तन को ट्रिगर नहीं करेगा, केवल एक संदर्भ परिवर्तन टेम्पलेट परिवर्तन को ट्रिगर करता है –

उत्तर

5

मुझे लगता है कि तिथि चर के संदर्भ को बदलने के लिए यह सही तरीका है। डॉक्स here से हमने:

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

तो यदि दिनांक संदर्भ समान रहता है, तो कुछ भी नहीं होगा। आपको एक नया दिनांक संदर्भ चाहिए और यही कारण है कि nextDay() का दूसरा संस्करण काम करता है।

यदि आप स्वरूपण पाइप को हटाते हैं तो आप देखेंगे कि अभी भी nextDay() कार्यों का दूसरा संस्करण है।

+0

fyi, दस्तावेज़ों से लिंक टूटा हुआ है –

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