कोणीय 2 (बीटा 6) में मेरे पास मुख्य मेनू के लिए एक घटक है।कोणीय 2 - घटक चर/घटक वर्ग संपत्ति पर दो तरह से डाटाबेसिंग?
<mainmenu></mainmenu>
मैं व्यापक या संकीर्ण के लिए एक बूलियन बांधना चाहता हूं। तो मैं इसे इस रूप दे दिया:
<mainmenu [(menuvisible)]="true"></mainmenu>
लेकिन क्या मैं चाहता हूँ (मुझे लगता है कि) एक जावास्क्रिप्ट वर्ग संपत्ति के लिए बाध्य करने के लिए (के रूप में मैं अन्य बातों के लिए बाध्य करने के लिए है, लेकिन में एक भी वर्ग का उपयोग करके साफ होने के लिए चाहते हो सकता है है घटक)।
Template parse errors: Parser Error: Unexpected token '='
हालांकि इस (? एक तरह से बंधन) प्रतीत होता है:
मैं अगर मैं एक वर्ग के बजाय एक ही चर के साथ एक ही मैं कोशिश एक त्रुटि
EXCEPTION: Template parse errors: Invalid property name 'menumodel.visible' ("
][(menumodel.visible)]="menumodel.visible">
मिल काम (लेकिन मैं किसी अन्य घटक से चौड़ा/संकीर्ण जाने के लिए मेनू को ट्रिगर करना चाहता हूं, इसलिए महसूस किया कि यह दो-तरफा डेटा बाध्य संपत्ति होनी चाहिए):
<menu [vis]="true"></menu>
यह मेरा मेनू घटक का एक सा:
@Component({
selector: 'menu',
templateUrl: './app/menu.html',
providers: [HTTP_PROVIDERS, ApplicationService],
directives: [ROUTER_DIRECTIVES, FORM_DIRECTIVES, NgClass, NgForm]
})
export class MenuComponent implements OnInit {
mainmenu: MainMenuVM;
constructor(private _applicationService: ApplicationService) {
this.mainmenu = new MainMenuVM();
}
// ...ngOnInit, various functions
}
यहाँ है मेरी mainmenu देखें मॉडल वर्ग
export class MainMenuVM {
public visible: boolean;
constructor(
) { this.visible = true; }
}
मैं एक मेनू जो माउस और पाठ है बनाने के लिए कोशिश कर रहा हूँ, लेकिन जा सकते हैं सिर्फ आइकन दिखाने के लिए संकीर्ण। मेनू के बगल में कंटेनर की स्थिति को बदलने के लिए मैं इस घटना को एक मूल घटक के ऊपर छोड़ दूंगा। अधिकतम करने के लिए एक सामग्री कंटेनर को ट्रिगर करने से मेनू को संकीर्ण होने के लिए ट्रिगर किया जाएगा - मैं यह नहीं कह रहा कि यह सबसे अच्छा तरीका है, लेकिन मैं गहराई से पहले इस विशेष प्रश्न को हल करना चाहता हूं।
कृपया ध्यान दें: मैं यहां एक इनपुट नियंत्रण के लिए डेटाबेस नहीं कर रहा हूं - बस एक घटक को डाटाबेसिंग कर रहा हूं ताकि मैं यूआई को संशोधित कर सकूं।
यह कोणीय cheatsheet से
<my-cmp [(title)]="name">
Sets up two-way data binding. Equivalent to: <my-cmp [title]="name" (titleChange)="name=$event">
अग्रिम धन्यवाद है!
अद्यतन
स्वीकार किए जाते हैं जवाब से कोड का घालमेल और यहाँ अंतिम काम कर कोड मेरी विशेष उपयोग के मामले के लिए अनुकूल:
app.html
...header html content
// This is what I started with
<!--<menu [menuvisible]="true" (menuvisibleChange)="menuvisible=$event"></menu>-->
// This is two way data binding
// 1. Banana-in-a-box is the input parameter
// 2. Banana-in-a-box is also the output parameter name (Angular appends it's usage with Change in code - to follow shortly)
// 3. Banana-in-a-box is the short hand way to declare the commented out code
// 4. First parameter (BIAB) refers to the child component, the second refers the variable it will store the result into.
// 5. If you just need an input use the remmed out code with just the first attribute/value
<menu [(menuvisible)]="menuvisible"></menu>
.. div content start
<router-outlet></router-outlet>
.. div content end
app.component.ts (रूट)
export class AppComponent implements OnInit{
menuvisible: Boolean;
}
menu.component।ts (रूट के बच्चे)
export class MenuComponent implements OnInit {
// Parameters - notice the appending of "Change"
@Input() menuvisible: boolean;
@Output() menuvisibleChange: EventEmitter<boolean> = new EventEmitter<boolean>();
// Init
ngOnInit() {
// Populate menu - fetch application list
this.getApplications();
// Initially we want to show/hide the menu depending on the input parameter
(this.menuvisible === true) ? this.showMenu() : this.hideMenu();
}
//...more code
}
menu.html
<div id="menu" [ngClass]="menuStateClass" style="position: absolute; top:0px; left: 0px;z-index: 800; height: 100%; color: #fff; background-color: #282d32">
<div style="margin-top: 35px; padding: 5px 0px 5px 0px;">
<ul class="menuList" style="overflow-x: hidden;">
<li>IsMenuVisible:{{menuvisible}}</li>
<li style="border-bottom: 1px solid #3d4247"><a (click)="toggleMenu()"><i class="fa fa-bars menuIcon" style="color: white; font-size: 16px;"></i></a></li>
<li *ngFor="#app of applications">
<a [routerLink]="[app.routerLink]">
<i class="menuIcon" [ngClass]="app.icon" [style.color]="app.iconColour" style="color: white;"></i>
<span [hidden]="menuStateTextHidden">{{ app.name }}</span>
</a>
</li>
</ul>
</div>
</div>
आयात करने के लिए आप क्या उदा जरूरत है याद रखें बाध्यकारी Angular 2 Tutorial (2016) - Inputs and Outputs
मुझे लगता है कि आप काफी उलझन में सवाल करते हैं। त्रुटि संदेश IMHO प्रदान किए गए कोड के साथ फिट नहीं है। यह मुझे स्पष्ट नहीं है कि आप वास्तव में क्या करना चाहते हैं। ' 'ज्यादा समझ में नहीं आता है। आप दो-तरफा बाध्यकारी क्यों 'सच' करना चाहते हैं? यह भी समझ में नहीं आता है '[(menumodel.visible)] = "menumodel.visible" '। आपके पास ''' के साथ कोई संपत्ति नहीं हो सकती है और आप इस तरह से उपप्रोपर्टी से जुड़ सकते हैं। –
मैंने कोणीय धोखा शीट से एक स्निपेट के साथ प्रश्न अद्यतन किया है। यह दो तरह के डेटा बाध्यकारी के साथ एक घटक दिखाता है। तो मुझे लगता है कि मुझे नीचे दिए गए उत्तर के साथ धोखा शीट में जो कुछ मिलता है उसे करने की ज़रूरत होगी। जैसे ? –
DanAbdn
मेनूदृश्य और दृश्य एकल गुण हैं। Menumodel एक वर्ग आधारित चर था, जैसा कि मेनमेनू था। कोड विकसित हो रहा है क्योंकि मैंने इस सवाल माफी मांगी है। – DanAbdn