簡體   English   中英

Angular 從構造函數加載組件中的值

[英]Angular loading values in component from constructor

我在獲取組件的初始化值時遇到問題。 我有一個頁面,我設置了一條路線。 加載路由(角度路由)時,組件構造函數中的值已設置,但似乎跳過了構造函數的一部分,因此值不符合預期。

這是我的構造函數:

public userQMail: QMails[] = [];
public low: string;
public med: string;
public all: string;

constructor(private qms: QMailsService) {
this.userQMail = this.qms.userQMails;
let x: number = 0;
let y: number = 0;
this.userQMail.forEach((e) => {
  if (parseInt(e.label) <= 30) {
    x++;
  } else {
    y++;
  }
});
this.low = x.toString();
this.med = y.toString();
this.all = (x + y).toString();
}

我看到的值是 0、0、0(代表低、中、全部),所以它跳過了 forEach ……我不知道為什么。 當我更改頁面並返回 go 時,值是正確的。 所以我想這是某種初始化優先級問題? 或者它必須做某事。 與路由?

在組件的第一次加載時, forEach 中的所有內容都被跳過......

我是 Angular 的新手,所以我可能不明白這里的一個概念。

我假設userQEmails中的QMailsService是異步加載的,或者至少是在調用此組件中的構造函數后初始化的。 如果是這種情況,這就解釋了為什么這些值都是零。

您可以通過直接使用 getter 訪問服務中的值來解決此問題,例如

get low(): string {
    return this.qms.userQMails?.filter(x => parseInt(e.label) <= 30)?.length?.toString();
}

get mid(): string {
    return this.qms.userQMails?.filter(x => parseInt(e.label) > 30)?.length?.toString();
}

get all(): string {
    return this.qms.userQMails?.length?.toString();
}

您還應該研究/了解更多關於 rxjs可觀察量和數據流的信息,以更清晰、更可維護的方式修復此問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM