मैं कोणीय 7 के साथ काम कर रहा हूं और मैं चाहता हूं कि हर बार बटन पर टेक्स्ट बदलें यह क्लिक करें या तो इसे लॉगिन या लॉगआउट होना चाहिए
मैं नीचे अपना कोड डाल रहा हूँ:
टीएस फ़ाइल:
export class HeaderComponent implements OnInit {
text: any;
constructor() {
this.loadDataFromApi();
}
ngOnInit() {
if (this.token == null) {
this.text == 'login';
alert(this.text);
} else if (this.token) {
this.token == 'logout';
alert(this.text);
}
}
}
एक चेतावनी अपरिभाषित आ रही है
एचटीएमएल फ़ाइल:
<button type="button"> {{text}}</button>
5 जवाब
आप असाइनमेंट ऑपरेटर (=
) के बजाय एक तुलना ऑपरेटर (==
) का उपयोग कर रहे हैं। इसे बदलें और इसे ठीक काम करना चाहिए। कुछ इस तरह:
export class HeaderComponent implements OnInit {
text: any;
constructor() {}
ngOnInit() {
this.loadDataFromApi();
if (this.token) {
this.text = 'logout';
alert(this.text);
} else {
this.text = 'login';
alert(this.text);
}
}
}
PS: this.loadDataFromApi
संभवत: async
प्रकृति का है और इस कॉल के नीचे दिए गए कोड को इसके लिए प्रतीक्षा किए बिना निष्पादित किया जाएगा, जिससे अप्रत्याशित व्यवहार हो सकता है। तो ज्यादातर मामलों में, आपको अलर्ट में login
मिलेगा।
मूल रूप से, आप जाँच कर रहे हैं कि क्या ऑथ टोकन है तो आप टेक्स्ट को लॉगआउट के रूप में बना रहे हैं और टोकन उनका शो लॉगिन नहीं है।
आपके मामले में ऐसा लगता है कि यह.टोकन डिफ़ॉल्ट के रूप में अपरिभाषित है
इसलिए अलर्ट में यह अपरिभाषित दिख रहा है।
दो शर्तें काम नहीं करेंगी
ऐसा होना चाहिए
if (this.token) {//The user is logged in so log out should show.
this.text = 'logout';
alert(this.text);
} else {//The user is logged out in so login should show
this.token == 'logout';
alert(this.text);
}
कृपया पहले this.token का मान जांचें, मान सेट है या नहीं।
else
के बाद आप this.token
को संशोधित कर रहे हैं, this.text
को नहीं।
इसके अलावा, आपको this.text
असाइन करने के लिए =
का उपयोग करना चाहिए, न कि ==
का। अपना कोड इस तरह बदलें:
ngOnInit() {
if (this.token === null) {
this.text = 'login';
alert(this.text);
} else if (this.token) {
this.text = 'logout';
alert(this.text);
}
}
PS: आपके token
चर को कहां परिभाषित किया गया है? मैं इसे आपकी .ts
फ़ाइल में नहीं देख सकता।
कोशिश करें, this.token == null
के बजाय !this.token
कोशिश करें (यह undefiend के साथ-साथ अशक्त के लिए जाँच करता है और यह अनुशंसित तरीका है)
if(!this.token){
this.text = 'login';
alert(this.text);
} else if (this.token){
this.text== 'logout';
alert(this.text);
}
आपको तुलना ==
ऑपरेटर के बजाय असाइनमेंट =
ऑपरेटर का उपयोग करना चाहिए
this.text ='login';
export class HeaderComponent implements OnInit {
text: any;
constructor( );
this.loadDataFromApi();
}
ngOnInit() {
if(this.token == null){
this.text ='login';
alert(this.text);
} else if (this.token){
this.token = 'logout';
alert(this.text);
}
}