javascript - *ngIf Angular doğru değerleri bağlamıyor


ngOnInit() içinde aşağıdaki kodu kullanıyorum, HTML'de bazı içerikleri bağlamak için kullanmak istiyorum ve nedense sorunu tespit edemiyorum ve web sayfasında hiçbir şey yazdırmıyor! Birisi rehberlik edebilir veya yardımcı olabilir mi, lütfen?

TypeScript :

public ngOnInit() { 

    let one = true;
    let two = false;
    let three = true;
    let four = true;

    let caseA = one && two && three && four;
    let caseB = one && !two && three && four; // should be true
    let caseC = one && two && !three && !four;
    let caseD = one && two && three && !four;
    let caseE = one && !two && !three && !four;
    
    console.log("cases: ", caseA, caseB, caseC, caseD, caseE);

}

HTML :

<p class="msg" *ngIf="caseA">{{ valueA }}</p>
<p class="msg" *ngIf="caseB">{{ valueB }}</p>
<p class="msg" *ngIf="caseC">{{ valueC }}</p>
<p class="msg" *ngIf="caseD">{{ valueD }}</p>
<p class="msg" *ngIf="caseE">{{ valueE }}</p>

Teşekkür ederim

Cevap #1

Bence doğru yerde deklarasyon yapmamışsınız. Değişkenleri bileşeninizde aşağıdaki gibi public olarak deklar etmeyi deneyin:

export class YourComponent implements OnInit {
    public caseA: boolean;
    public caseB: boolean;
    public caseC: boolean;
    public caseD: boolean;
    public caseE: boolean;

  ngOnInit(): void {
    const one = true;
    const two = false;
    const three = true;
    const four = true;

    this.caseA = one && two && three && four;
    this.caseB = one && !two && three && four; // should be true
    this.caseC = one && two && !three && !four;
    this.caseD = one && two && three && !four;
    this.caseE = one && !two && !three && !four;

    console.log("cases: ", this.caseA, this.caseB, this.caseC, this.caseD, this.caseE);
  }

Cevap #2

Şablonun bu değişkenlere erişebilmesi için .ts dosyanızda genel değişkenleri bildirmelisiniz

export class AppComponent implements OnInit{

 public caseA = true

  public ngOnInit() {

    let one = true;
    let two = false;
    let three = true;
    let four = true;

    let caseA = false // have no impact at ngIf in template
    let caseB = one && !two && three && four; // should be true
    let caseC = one && two && !three && !four;
    let caseD = one && two && three && !four;
    let caseE = one && !two && !three && !four;

    console.log("cases: ", caseA, caseB, caseC, caseD, caseE);

}

html

<p class="msg" *ngIf="caseA">Hey there</p>