Donc, je travaille avec angular4 dans ma pratique et c’est nouveau pour moi. Heureusement, pour obtenir les éléments HTML et leurs valeurs, j’utilisais <HTMLInputElement> document.getElementById
ou <HTMLSelectElement> document.getElementById
Je me demande s'il y a un remplacement pour cela dans angulaire
Vous pouvez marquer votre élément DOM en utilisant #someTag
, puis l'obtenir avec @ViewChild('someTag')
.
Voir exemple complet:
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
imprimera du texte.
Vous pouvez simplement injecter le jeton DOCUMENT dans le constructeur et utiliser les mêmes fonctions
import { Inject } from '@angular/core';
import { DOCUMENT } from '@angular/common';
@Component({...})
export class AppCmp {
constructor(@Inject(DOCUMENT) document) {
document.getElementById('el');
}
}
Ou si l'élément que vous souhaitez obtenir se trouve dans ce composant, vous pouvez utiliser références de modèle .
element: HTMLElement;
constructor() {}
fakeClick(){
this.element = document.getElementById('ButtonX') as HTMLElement;
this.element.click();
}
Pour Angular 8 ou @ViewChild postérieur ont un paramètre supplémentaire appelé opts, qui ont deux propriétés: read et static, read est optionnel. Vous pouvez l'utiliser comme ceci:
@ViewChild('mydiv', { static: false }) mydiv: ElementRef;
Notez que ceci est pour Angular 8 ou postérieur.