बुलाया जा रहा है मैं Angular2 साथ काम कर रहा हूँ और एक तत्व सशर्त एक समारोह कॉल का परिणाम के आधार पर प्रदर्शित करना चाहते हैं।Angular2 * ngIf = "afunctioncall()" समारोह में परिणाम 9 बार
जब मैं ऐसा करता हूं तो मैंने देखा है कि फ़ंक्शन को कई बार कहा जाता है।
http://plnkr.co/edit/MScwD3LaIj9YfBlwWltw?p=preview
'रिटर्निंग सच' console.log उत्पादन 4 बार है:
@Component({
selector: 'my-app',
template: `
<h1>Hello</h1>
<div *ngIf="returnsTrue()">
<h1>World</h1>
</div>
`,
})
export class App {
name:string;
constructor() {
this.name = 'Angular2'
}
returnsTrue(): boolean {
console.log('Returning true');
return true;
}
}
जुड़े plnkr देखें।
क्या कोई मुझे बता सकता है कि ऐसा क्यों होता है?
और क्या इससे बचने के लिए वैसे भी है?
मैं के साथ यह कोणीय 1 से संबंधित होने और डाइजेस्ट चक्र की जा रही Angular2 के लिए फिर से लिखा तथापि निम्नलिखित पोस्ट देखा है मुझे यकीन है कि यह प्रासंगिक है नहीं कर रहा हूँ:
ng-if being called more times than it should
यह जवाब मेरे लिए काम करता है जब मैंने फ़ंक्शन (this.returnsTrue(); anser में स्थानांतरित किया) ngOnChanges() पर कॉल करें। इसे ngOnInit() में छोड़कर केवल प्रति घटक अद्यतन के बजाय एक बार फ़ंक्शन कहा जाता है। – wdspider