Donc, je travaille avec angular4 dans mon travail de pratique et c'est nouveau pour moi. Heureusement, pour obtenir des éléments html et ses valeurs, j'ai utilisé
<HTMLInputElement> document.getElementById
ou
<HTMLSelectElement> document.getElementById
Je me demande s'il y a un remplacement pour cela en angulaire
angular
typescript
Nino Gutierrez
la source
la source
Réponses:
Vous pouvez baliser votre élément DOM en utilisant
#someTag
, puis l'obtenir avec@ViewChild('someTag')
.Voir l'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 .la source
Vous pouvez simplement injecter le jeton DOCUMENT dans le constructeur et utiliser les mêmes fonctions dessus
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 est dans ce composant, vous pouvez utiliser des références de modèle .
la source
Pour Angular 8 ou postérieur, @ViewChild a un paramètre supplémentaire appelé opts, qui a deux propriétés: read et static, read est facultatif. Vous pouvez l'utiliser comme ceci:
// ... @ViewChild('mydiv', { static: false }) public mydiv: ElementRef; constructor() { // ...
<div #mydiv></div>
REMARQUE: Static: false n'est plus requis dans Angular 9. (juste au
{ static: true }
moment où vous allez utiliser cette variable dans ngOnInit)la source
*ngIf
. Comment créez-vous l'élément?element: HTMLElement; constructor() {} fakeClick(){ this.element = document.getElementById('ButtonX') as HTMLElement; this.element.click(); }
la source
Essaye ça:
Code de fichier TypeScript:
Code HTML:
la source