Как использовать getElementById с * ngIf? - PullRequest
0 голосов
/ 30 сентября 2019

Я пытаюсь выбрать div с * ngIf:

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

, который возвращает значение null, когда я использую getElementById. Если я удаляю 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);
}

вопрос и объяснение теперь оба записаны, замена с работает, просто нужно удалить оригинальное объяснениеиз-под правильного ответа, и объяснение каждого вопроса должно переместиться в поле вопроса и аналогичным образом удалить объяснение из-под правильного ответа.

1 Ответ

0 голосов
/ 30 сентября 2019

если вы хотите иметь доступ к вашему div с помощью TypeScript, вам нужно пометить его хэштегом

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

и добавить имя в параметр, который вы используете, для передачи значения!

или с

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