से खुद को हटा रहे हैं मेरे पास कोणीय 2 में दो बाल घटकों (dataset-create
और dataset-detail
) के साथ एक मूल घटक है। जनक घटक नियंत्रण जो दो घटक के अपने टेम्पलेट में इस कोड का उपयोग करके किसी भी समय पर दिखाया गया है:कोणीय 2: घटक डीओएम
<div [ngSwitch]="mode">
<template [ngSwitchWhen]="'create'">
<dataset-create [dataset]="dataset" (close)="onDatasetFormClose()"></dataset-create>
</template>
<template [ngSwitchWhen]="'detail'">
<dataset-detail [dataset]="dataset" (close)="onDatasetFormClose()"></dataset-detail>
</template>
</div>
माता पिता घटक बच्चों से घटना (close)
को सुनता है। जब यह यह प्राप्त करता है, एक कॉलबैक फ़ंक्शन कहा जाता है (onDatasetFormClose()
) जो निम्नलिखित कोड है:
private onDatasetFormClose() {
this.mode = "list";
}
इस समारोह mode
चर का मान बदल जाता है। इससे ngSwitchWhen
दोनों विफल होने का कारण बनता है और इस प्रकार वर्तमान में सक्रिय बाल घटक नष्ट हो जाता है। क्योंकि यह पैरेंट घटक पर निर्भर करता है
<form novalidate="novalidate">
<button type="button" (click)="onClose()">close</button>
<button type="submit" (click)="onSubmit()">submit</button>
<label for="dataFileD">data</label>
<input id="dataFileD" type="file" (change)="onFileChange($event)">
</form>
हालांकि, इस समाधान मेरे लिए लग रहा है "गलत", (और इसलिए:
इसके अलावा, FYI करें, यह कैसे बच्चे घटकों में से एक के टेम्पलेट की तरह लग रहा है इसे स्वतंत्र रूप से पुन: उपयोग करना कठिन है)।
मुझे लगता है कि एक समान परिणाम प्राप्त करने का एक और तरीका राउटर का उपयोग करना होगा। यह समाधान न केवल "बहुत-फूला हुआ-के-कारण" लगता है, बल्कि उपरोक्त मेरे समाधान के समान समस्या से भी पीड़ित है: बच्चे के घटक को स्वतंत्र रूप से उपयोग नहीं किया जा सकता है।
क्या यह संभव है कि कोई बच्चा घटक स्वयं को डीओएम से हटा दें? इस तरह की स्थितियों को संभालने का सही तरीका क्या है? हो सकता है कि डीओएम से खुद को हटाने वाले घटक एक खराब कोणीय 2 कोडिंग अभ्यास है?
अग्रिम धन्यवाद।
के साथ सबकुछ लपेटें, मुझे लगता है कि किसी घटक के लिए पैरेंट घटक की आवश्यकता है। किसी भी घटक जो किसी ईवेंट को उत्सर्जित करता है, उसके लिए शायद एक मूल घटक की आवश्यकता होती है। उदाहरण के लिए, टैब लागू करने के लिए, आपको 'टैब' बाल घटकों के अतिरिक्त, शायद माता-पिता 'टैबसेट' घटक की आवश्यकता हो। –