如何在 Angular 中的变化检测周期中使用静态字段作为函数?
How do I use static field for function in change detection cycle in Angular?
我想在我的模板中的每个 CD 循环上使用静态字段而不是调用函数 isCorrect(option.correct, i)。请你能帮我做到这一点。谢谢。
我的模板代码如下所示:
<form [formGroup]="formGroup">
<ol *ngIf="!multipleAnswer">
<div class="options" *ngFor="let option of currentQuestion.options; index as i">
<mat-radio-button
(change)="setSelected(i)"
[class.is-correct]="option.selected && option.correct"
[class.is-incorrect]="option.selected && !option.correct">
<li>{{ option.text }}</li>
<mat-icon class="feedback-icon" *ngIf="option.selected && option.correct && isCorrect(option.correct, i)">done
</mat-icon>
<mat-icon class="feedback-icon" *ngIf="option.selected && !option.correct">clear</mat-icon>
</mat-radio-button>
<section class="messages" *ngIf="option.selected">
<div *ngIf="option.selected && option.correct && isCorrect(option.correct, i)">
<mat-icon class="sentiment">sentiment_very_satisfied</mat-icon>
<span class="message correct-message">
You're right! {{ correctMessage }}
</span>
</div>
...
您可以在函数内部使用静态字段:
export class YourComponent {
static correct = true;
isCorrect(){
return YourComponent.correct;
}
// or this:
get ok() {
return YourComponent.correct;
}
// ...
}
据我了解,这并不是您真正需要的静态字段。您只需要组件上有一个变量或其中一个选项,就可以知道该选项是否正确。
根据您在评论中提供的代码,我认为您的 ìsCorrect
方法将始终 return 为真,因此您可以直接使用 option.correct
而不是 isCorrect(option.correct, i)
如果 isCorrect
方法确实执行了一些棘手的逻辑,您可以在 setSelected
方法中调用该方法,只要选择发生变化就会调用该方法。或者你可以设置一个组件变量并在模板中使用它
class MyComponent
{
public correct: isCorrectAnswerSelected = false;
//...
setSelected()
{
this.isCorrectAnswerSelected = this.isCorrect(... );
模板
<div *ngIf="option.selected && option.correct && isCorrectAnswerSelected">
我想在我的模板中的每个 CD 循环上使用静态字段而不是调用函数 isCorrect(option.correct, i)。请你能帮我做到这一点。谢谢。
我的模板代码如下所示:
<form [formGroup]="formGroup">
<ol *ngIf="!multipleAnswer">
<div class="options" *ngFor="let option of currentQuestion.options; index as i">
<mat-radio-button
(change)="setSelected(i)"
[class.is-correct]="option.selected && option.correct"
[class.is-incorrect]="option.selected && !option.correct">
<li>{{ option.text }}</li>
<mat-icon class="feedback-icon" *ngIf="option.selected && option.correct && isCorrect(option.correct, i)">done
</mat-icon>
<mat-icon class="feedback-icon" *ngIf="option.selected && !option.correct">clear</mat-icon>
</mat-radio-button>
<section class="messages" *ngIf="option.selected">
<div *ngIf="option.selected && option.correct && isCorrect(option.correct, i)">
<mat-icon class="sentiment">sentiment_very_satisfied</mat-icon>
<span class="message correct-message">
You're right! {{ correctMessage }}
</span>
</div>
...
您可以在函数内部使用静态字段:
export class YourComponent {
static correct = true;
isCorrect(){
return YourComponent.correct;
}
// or this:
get ok() {
return YourComponent.correct;
}
// ...
}
据我了解,这并不是您真正需要的静态字段。您只需要组件上有一个变量或其中一个选项,就可以知道该选项是否正确。
根据您在评论中提供的代码,我认为您的 ìsCorrect
方法将始终 return 为真,因此您可以直接使用 option.correct
而不是 isCorrect(option.correct, i)
如果 isCorrect
方法确实执行了一些棘手的逻辑,您可以在 setSelected
方法中调用该方法,只要选择发生变化就会调用该方法。或者你可以设置一个组件变量并在模板中使用它
class MyComponent
{
public correct: isCorrectAnswerSelected = false;
//...
setSelected()
{
this.isCorrectAnswerSelected = this.isCorrect(... );
模板
<div *ngIf="option.selected && option.correct && isCorrectAnswerSelected">