क्या आप angular2 में घटक गुण को म्यूट करते समय प्रोग्रामर रूप से कोणीय के परिवर्तन का पता लगा सकते हैं?ngOnChanges फायरिंग नहीं करते जब इनपुट प्रॉपर्टी बदल जाती है
@Component({
selector: 'my-component',
})
class MyComponent implements OnChanges {
@Input() message: string;
ngOnChanges(changeRecord) {
for (var change in changeRecord) {
console.log('changed: ' + change);
}
}
doSomething() {
// I want ngOnChanges to be called some time after I set the
// message. Currently it is only called if the host element
// changes the value of [message] on the element.
this.message = 'some important stuff';
}
}
मैन्युअल रूप से परिवर्तन पहचान को चलाने के लिए, ApplicationRef.tick() का उपयोग करने का प्रयास करें। हालांकि, मुझे विश्वास नहीं है कि ngOnChanges() को कॉल किया जाएगा, क्योंकि मेजबान संपत्ति में बदलाव नहीं आया था। आप बच्चे के घटक में एक बाल संपत्ति क्यों बदल रहे हैं जो एक इनपुट संपत्ति है? –
उपरोक्त कोड वास्तविक कोड नहीं है, मैं बस इस मुद्दे का प्रदर्शन करने के लिए इसका उपयोग कर रहा था। मेरा वास्तविक कोड एक यूनिट परीक्षण है और मैंने 'TestComponentBuilder' का उपयोग कर घटक का एक उदाहरण प्राप्त किया है। मैं इकाई संदेश कोड को 'संदेश' संपत्ति के मान को संशोधित करना चाहता हूं और यह जांचने के लिए कि 'ngOnChanges' में कोड से एक ईवेंट उत्सर्जित किया गया है। लेकिन कुछ घंटों के बाद सिर खरोंच करने के बाद मैं इसे पूरा करने के किसी भी तरीके से नहीं समझ सकता। मैंने 'डीबगलेमेंट' पर 'देशी एलिमेंट' को किसी भी प्रभाव के लिए संशोधित करने का भी प्रयास नहीं किया है। – ovangle
मैं 'ComponentFixture.modifyHostBinding (प्रॉपर्टी: स्ट्रिंग, न्यूवैल्यू: कोई भी)' या कुछ समान जैसा तरीका ढूंढ रहा था, लेकिन ऐसा कुछ प्रतीत नहीं होता है, इसलिए मैंने एक और सामान्य सवाल उठाया। – ovangle