html 如何在Angular中声明一个带有返回方法的变量为值?

smdncfj3  于 2022-12-16  发布在  Angular
关注(0)|答案(3)|浏览(152)

我正在使用[ngModel]保存Angular上所选选项的值,但默认值必须是我可以使用此方法检索的现有选项

getPersonnageByIdd(id: string) {
    const persoSelectionne = this.personnages.find((x: { id: string; }) => x.id === id);
    return persoSelectionne;
  }

问题是,如果我声明一个变量,并将该方法的返回值声明为这样的值

persoDefault = this.getPersonnageByIdd("demochar").name;

整个组件崩溃!经过大量的研究,我还没有找到这个问题的答案,请帮助。问候,
我可以直接将方法放在[ngModel]中,默认值也可以,但是我需要跟踪所选的选项,并且需要一个变量来完成此操作。

ni65a41a

ni65a41a1#

我猜this.personnages没有元素demochar,在这种情况下,findgetPersonnageByIdd返回undefined
一种解决方案是使用可选链接。

persoDefault = this.getPersonnageByIdd("demochar")?.name;
r9f1avp5

r9f1avp52#

从您提供的代码来看,getPersonnageByIdd()提供的结果中没有名为“name”的属性。
我会这么做

// Assuming that the current component has all the people loaded into an array called peopleList. You want to return the age of the Person which you have found by their id.
getPersonAgeById(id: number) {
    Person foundPerson = this.peopleList.find(x => x.id === id)
    return foundPerson.age; // also assuming that the Person object has an attribute called age of with the type number.
}

还有一些建议:

  • 类、函数、变量的正确命名对于跟踪所有内容非常重要。
  • 使用字符串表示“id“是不常见的(尽管在这种情况下很难根据您提供的代码量做出判断。请随意与我们分享附带的类)
hwamh0ep

hwamh0ep3#

正如你们中的一些人指出的,问题来自于getPersonnageByIdd()提供的结果中没有名为“name”的属性,因为我需要更改我的API请求;这个调用API返回的对象没有包含所有需要的信息。谢谢你们给我指出了正确的方向

相关问题