<div *ngFor="let x of options; let i = index;trackBy:trackByIdx">
    <mat-form-field class="full-width" appearance="fill">
        <mat-label>Option</mat-label>
        <input type="input" [(ngModel)]="options[i]" matInput>
    </mat-form-field>
</div>

किसी अजीब कारण से, प्रश्नोत्तरी फॉर्म को संपादित करने का प्रयास करते समय मुझे टेम्पलेट से एक त्रुटि मिल रही है। मुझे त्रुटि हो रही है TypeError: 0 केवल पढ़ने के लिए [(ngModel)] = "विकल्प [i]" से है, जिसका अर्थ है कि त्रुटि टेम्पलेट से आती है।

@Input() title: string;
@Input() options: string[];
@Output() titleEmitter: EventEmitter<string> = new EventEmitter<string>();
@Output() optionsEmitter: EventEmitter<string[]> = new EventEmitter<string[]>();
  
onAddOptions() {
    if (this.options && this.options.length < 11) {

      this.optionsEmitter.emit([...this.options, '']);
    }
}
  
emitOptions(index: number) {
    this.optionsEmitter.emit([...this.options.slice(0, index), this.options[index], ...((this.options[index+1]) ? this.options.slice(index + 1) : [])])
}

मुझे यकीन नहीं है कि बाकी कोड इरादे से काम करेगा, क्योंकि त्रुटि टेम्पलेट से फेंक दी गई है, लेकिन मैं यह समझने की उम्मीद कर रहा हूं कि यह एक त्रुटि क्यों फेंक रहा है। क्या सूचकांक केवल पढ़ा जाता है? ऐसा लगता है कि यह इंडेक्स से आ रहा है, क्योंकि मुझे ERROR TypeError भी मिलता है: 1 केवल तभी पढ़ा जाता है जब मैं दूसरे विकल्प को संपादित करने का प्रयास करता हूं।

0
foreverfurious 2 अगस्त 2020, 06:41

1 उत्तर

सबसे बढ़िया उत्तर

ngModel में अनुक्रमणिका का उपयोग करने की कोई आवश्यकता नहीं है। जैसा कि मैं देख सकता हूं कि आपको लूप का उपयोग करके मूल्य के साथ इनपुट को बांधना होगा।

आप बस अपने html कोड को निम्नलिखित पंक्तियों के कोड से बदल सकते हैं। इससे आपकी त्रुटि समाप्त हो जाएगी और आप जो चाहें प्राप्त कर सकते हैं।

<div *ngFor="let x of options; let i = index;trackBy:trackByIdx">
    <mat-form-field class="full-width" appearance="fill">
        <mat-label>Option</mat-label>
        <input type="input" [(ngModel)]="x" matInput>
    </mat-form-field>
</div>
0
Minal Shah 2 अगस्त 2020, 05:49