如何与* ngIf一起使用getElementById?

时间:2019-09-30 14:26:31

标签: javascript angular dom viewchild

我正在尝试选择一个带有* ngIf的div:

<div id="explanation" *ngIf="isCorrect(option.optionValue)">

当我使用getElementById时返回null。如果我删除ngIf可以正常工作,但是我需要在我的应用中使用ngIf。那么我该如何选择div?

编辑:重构的代码如下:

<div [hidden]="!isCorrect(option.optionValue)">
  <div id="explanation">
    Option {{ question.answer }} is correct because {{ question.explanation }}.
  </div>
</div>


ngAfterViewInit() {
  let itemFrom = document.getElementById('explanation');
  let itemTo = document.getElementById('question');
}

radioChange(answer) {
  this.question.selectedOption = answer;
  this.answer.emit(answer);

  this.moveExplanation(this.itemFrom, this.itemTo);
}

moveExplanation(from, to) {
  to.replaceWith(from);
}

问题和解释都已记录下来,replaceWith可以正常工作,只需要从正确答案下面删除原始解释,每个问题的解释应移至问题框中,同样从正确答案下面删除解释。

1 个答案:

答案 0 :(得分:0)

如果您想使用TypeScript访问div,则需要用井号标记

<div id="explanation" *ngIf="isCorrect(explanation)" #explanation>

并将名称添加到您使用的参数中,以传递值!

或搭配

<div [(ngModel)]="option"></div