मैं कोणीय 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>
2
Testing Anurag 14 फरवरी 2019, 10:14

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 मिलेगा।

4
SiddAjmera 14 फरवरी 2019, 10:29

मूल रूप से, आप जाँच कर रहे हैं कि क्या ऑथ टोकन है तो आप टेक्स्ट को लॉगआउट के रूप में बना रहे हैं और टोकन उनका शो लॉगिन नहीं है।

आपके मामले में ऐसा लगता है कि यह.टोकन डिफ़ॉल्ट के रूप में अपरिभाषित है

इसलिए अलर्ट में यह अपरिभाषित दिख रहा है।

दो शर्तें काम नहीं करेंगी

ऐसा होना चाहिए

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 का मान जांचें, मान सेट है या नहीं।

0
shuaib 14 फरवरी 2019, 11:02

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 फ़ाइल में नहीं देख सकता।

1
veben 14 फरवरी 2019, 10:47

कोशिश करें, 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);
    }
2
Pranay Rana 14 फरवरी 2019, 11:46

आपको तुलना == ऑपरेटर के बजाय असाइनमेंट = ऑपरेटर का उपयोग करना चाहिए

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);

        }
    }
2
Sivaramakrishnan 14 फरवरी 2019, 10:18