मैं
मैं एक वोट कास्टिंग प्रणाली है, जो वेबसाइट भर के कई घटकों में दोबारा इस्तेमाल किया जाएगा पर काम कर रहा हूँ करने के लिए कोशिश कर रहा हूँ क्या में रखने से। इसे शुष्क रखने के लिए, मैं किसी भी घटक से नामित घटक को नामित डीओएम तत्व में बनाना चाहता हूं .. घटक बनने के बाद, आवृत्ति चर सेट किया जाना चाहिए (इस मामले में model:string
और pk:number
, दोनों सार्वजनिक)।NG4 componentFactory डोम लक्ष्य
अपेक्षित परिणाम
मैं घटक नामित स्थान में प्रदान करने, सही डेटा जो सही होने के बाद कारखाने घटक बनाया गया है स्थापित किए गए हैं मुद्रण की उम्मीद है। वोट के तल पर उत्पादन किया जाना चाहिए Model: project PK: 1
वास्तविक स्थिति
ComponentFactory वर्तमान में घटक कारखाने द्वारा बनाई मतदान घटक के दो आउटपुट है: सही स्थान पर
(लक्षित div), लेकिन सेट इंस्टेंस चर के बिना।
पृष्ठ के निचले हिस्से में, लेकिन बाद में और किसी अन्य विषय में यह एक अन्य समस्या है।
कुछ कोड
@NgModule({
..
declarations: [
AppComponent,
ProjectComponent, // parent for voteContainer
VoteComponent, // Dynamic component
],
entryComponents: [
VoteComponent,
], ..
})
माता पिता VoteComponent कारखाने युक्त घटक
export class ProjectDetailComponent implements AfterViewInit {
@ViewChild('voteComponentContainer', {read: ViewContainerRef}) voteComponentContainer;
public ngAfterViewInit() {
this.factoryVoteComponent();
}
private factoryVoteComponent() {
const voteComponentFactory = this.componentFactoryResolver.resolveComponentFactory(VoteComponent);
const voteComponentRef = this.viewContainerRef.createComponent(voteComponentFactory);
voteComponentRef.instance.model = "project";
voteComponentRef.instance.pk = 1;
voteComponentRef.changeDetectorRef.detectChanges();
}
}
गतिशील घटक लक्ष्य:
<vote-component-container></vote-component-container>
बेसिक मतदान घटक
@Component({
selector: 'vote-component-container',
templateUrl: 'vote.component.html',
})
export class VoteComponent {
public model:string;
public pk:number;
public constructor(){}
}
मैं
क्या कोशिश की है मैं अब काफी कुछ समय के लिए इस के साथ संघर्ष कर रहा है, इसलिए वहाँ काफी कुछ प्रयास यह काम करने के लिए मिल रहे हैं। फैक्ट्री के लिए व्यूचल्ड बनाने के साथ अंतिम प्रयास था।
कि इसके अलावा, मैं नाम, घटक के टेम्पलेट रिसीवर स्थापित करने के विभिन्न तरीकों, आदि के साथ प्रयोग करना किया गया है
क्या मैं
पूछने के लिए किसी के साथ किसी भी अनुभव है चाहता हूँ स्थिति के लिए गतिशील घटकों का उपयोग अब मैं कोशिश कर रहा हूँ? मैं सही दिशा में प्रस्तुत किए जा रहे घटक के मुद्दे को ठीक करने के तरीके पर सही दिशा में एक धक्का पर उम्मीद कर रहा था लेकिन उपलब्ध विशेषताओं के बिना।
, और फिर इसे, यह काम करता है बनाने के बाद उन्हें सेट करने का प्रयास किया था? उदाहरण ---> सार्वजनिक पीके: संख्या = 0; सार्वजनिक मॉडल: स्ट्रिंग = ''; <--- – diopside
भी ध्यान रखें कि जब गतिशील घटक बनाते समय वे एक * भाई * के लिए ViewContainerRef उन्हें रखने में किया के रूप में बनाया जाता है। एक बच्चे के रूप में नहीं। तो अगर आप उन्हें एक घटक तत्व में जगह ViewChild उपयोग कर रहे हैं, यह सही है कि कंटेनर के बाद, यह के भीतर नहीं रेंडर किया जाएगा। इससे मुझे बहुत भ्रम पैदा हुआ जब मैंने पहली बार डब्ल्यू/गतिशील घटकों को काम करना शुरू किया! – diopside