从 HTML 调用函数到打字稿未等待完成
Calling function from HTML to typescript not waited to finish
我有一个 HTML 元素,如下所示
<div *ngFor="let item of items">
<input type='number' [min]="getMinData(param1,param2)" />
</div>
在ts文件里面
getMinData(rules: ConstraintRule[], id: string) {
rules.forEach((rule) => {
rule._metadata.productList.forEach((product: SProduct) => {
product.OptionGroups.forEach((optionGroup: SProductOptionGroup) => {
optionGroup.Options.forEach((option: SProductOptionComponent) => {
if (option.ComponentProductId == id) {
return option.MinQuantity;
}
});
});
});
});
}
此外,没有任何 API 调用或任何其他东西,它只是对本地数据的过滤。
但是,在 HTML 没有返回正确的数量。
你必须 return 一些东西才能 getMinData
功能。
目前,您调用 return option.MinQuantity;
,但它是匿名函数的结果 - (option: SProductOptionComponent) => {
。
如果您只想找到第一个 option.MinQuantity
,试试这个函数:
getMinData(rules: ConstraintRule[], id: string) {
let minQuantity = 0;
rules.forEach((rule) => {
rule._metadata.productList.forEach(({ OptionGroups }) => {
OptionGroups.forEach(({ Options }) => {
const foundOption = Options.find((o) => o.ComponentProductId === id);
minQuantity = foundOption ? foundOption.MinQuantity : 0; // Default min value is 0
});
});
});
return minQuantity; // return value
}
我有一个 HTML 元素,如下所示
<div *ngFor="let item of items">
<input type='number' [min]="getMinData(param1,param2)" />
</div>
在ts文件里面
getMinData(rules: ConstraintRule[], id: string) {
rules.forEach((rule) => {
rule._metadata.productList.forEach((product: SProduct) => {
product.OptionGroups.forEach((optionGroup: SProductOptionGroup) => {
optionGroup.Options.forEach((option: SProductOptionComponent) => {
if (option.ComponentProductId == id) {
return option.MinQuantity;
}
});
});
});
});
}
此外,没有任何 API 调用或任何其他东西,它只是对本地数据的过滤。
但是,在 HTML 没有返回正确的数量。
你必须 return 一些东西才能 getMinData
功能。
目前,您调用 return option.MinQuantity;
,但它是匿名函数的结果 - (option: SProductOptionComponent) => {
。
如果您只想找到第一个 option.MinQuantity
,试试这个函数:
getMinData(rules: ConstraintRule[], id: string) {
let minQuantity = 0;
rules.forEach((rule) => {
rule._metadata.productList.forEach(({ OptionGroups }) => {
OptionGroups.forEach(({ Options }) => {
const foundOption = Options.find((o) => o.ComponentProductId === id);
minQuantity = foundOption ? foundOption.MinQuantity : 0; // Default min value is 0
});
});
});
return minQuantity; // return value
}