Итак, я работаю с angular4 в своей практической работе, и для меня это в новинку. К счастью, чтобы получить элементы html и их значения, я использовал
<HTMLInputElement> document.getElementById
или
<HTMLSelectElement> document.getElementById
Мне интересно, есть ли ему замена в angular
angular
typescript
Нино Гутьеррес
источник
источник
Ответы:
Вы можете пометить свой элемент DOM с помощью
#someTag
, а затем получить его с помощью@ViewChild('someTag')
.См. Полный пример:
import {AfterViewInit, Component, ElementRef, ViewChild} from '@angular/core'; @Component({ selector: 'app', template: ` <div #myDiv>Some text</div> `, }) export class AppComponent implements AfterViewInit { @ViewChild('myDiv') myDiv: ElementRef; ngAfterViewInit() { console.log(this.myDiv.nativeElement.innerHTML); } }
console.log
напечатает какой-то текст .источник
Вы можете просто вставить токен DOCUMENT в конструктор и использовать на нем те же функции
import { Inject } from '@angular/core'; import { DOCUMENT } from '@angular/common'; @Component({...}) export class AppCmp { constructor(@Inject(DOCUMENT) document) { document.getElementById('el'); } }
Или, если элемент, который вы хотите получить, находится в этом компоненте, вы можете использовать ссылки на шаблоны .
источник
Для Angular 8 или последующего @ViewChild есть дополнительный параметр opts, который имеет два свойства: чтение и статическое, чтение не является обязательным. Вы можете использовать это так:
// ... @ViewChild('mydiv', { static: false }) public mydiv: ElementRef; constructor() { // ...
<div #mydiv></div>
ПРИМЕЧАНИЕ: Static: false больше не требуется в Angular 9. (как раз
{ static: true }
тогда, когда вы собираетесь использовать эту переменную внутри ngOnInit)источник
*ngIf
. Как вы создаете элемент?element: HTMLElement; constructor() {} fakeClick(){ this.element = document.getElementById('ButtonX') as HTMLElement; this.element.click(); }
источник
Попробуй это:
Код файла TypeScript:
HTML код:
источник