2017-06-12 45 views
5

में मॉडल ऑब्जेक्ट का गेटर और सेटटर मैं अपने मॉडल क्लास में गेटर और सेटर कैसे काम कर सकता हूं?कोणीय 4

मेरा लक्ष्य चयनित दिन के पूर्णांक मूल्य की गणना करना है, जब इनपुट, तिथि शामिल है। मैं इसे सेटटर में करने जा रहा था, लेकिन कोणीय 4 मेरे मॉडल के सेटर और गेटर को अनदेखा करता है।

मेरे मॉडल वर्ग:

export class MyModel { 
    @Input('date') 
    get date(): String { 
     console.log('Getting date'); 
     ... 
    } 

    set date(val) { 
     console.log('Setting date: ' + val); 
     ... 
    } 
} 

मेरे टेम्पलेट:

... 
<input class="form-control" name="dp" [(ngModel)]="model.date"> 
... 

लेकिन गेटर और सेटर काम नहीं करते। मैं क्या खो रहा हूँ?

+3

इस वाक्य रचना '@Input ('तारीख

https://www.typescriptlang.org/docs/handbook/classes.html से इस उदाहरण के खिलाफ अपने काम की जाँच करें ')' केवल नेस्टेड घटकों के गुणों के लिए है। सजावटी मॉडल श्रेणी संपत्ति पर नहीं है। – DeborahK

+0

क्या आप अपने घटक वर्ग के लिए अपना कोड भी दिखा सकते हैं और यह इस मॉडल क्लास का उपयोग कैसे कर रहा है? – DeborahK

+0

@ डेबोराक यदि हम किसी सेवा से घोंसला वाले घटक को डेटा पास कर रहे हैं। इनपुट्स गेटर्स के साथ एकमात्र तरीका हैं? – Winnemucca

उत्तर

8

जिस तरह से आप डेट प्रॉपर्टी को इनपुट के रूप में घोषित करते हैं, वह गलत दिखता है लेकिन यह कहना मुश्किल है कि यह आपके सभी कोड को देखे बिना एकमात्र समस्या है। @Input('date') का उपयोग करने की बजाय दिनांक संपत्ति की घोषणा करें: private _date: string;। साथ ही, सुनिश्चित करें कि आप new कीवर्ड के साथ मॉडल को तुरंत चालू कर रहे हैं। अंत में, नियमित डॉट नोटेशन का उपयोग कर संपत्ति का उपयोग करें। एक plunker का प्रदर्शन कर रहा है कि यह क्या लगता है कि आप क्या करने की कोशिश कर रहे हैं

let passcode = "secret passcode"; 

class Employee { 
    private _fullName: string; 

    get fullName(): string { 
     return this._fullName; 
    } 

    set fullName(newName: string) { 
     if (passcode && passcode == "secret passcode") { 
      this._fullName = newName; 
     } 
     else { 
      console.log("Error: Unauthorized update of employee!"); 
     } 
    } 
} 

let employee = new Employee(); 
employee.fullName = "Bob Smith"; 
if (employee.fullName) { 
    console.log(employee.fullName); 
} 

और यहाँ: https://plnkr.co/edit/OUoD5J1lfO6bIeME9N0F?p=preview