J'ai un code:
document.getElementById('loginInput').value = '123';
Mais lors de la compilation du code, le message d'erreur suivant s'affiche:
La valeur de la propriété n'existe pas sur le type HTMLElement.
J'ai déclaré un var: value: string;
.
Comment puis-je éviter cette erreur?
Je vous remercie.
si vous voulez définir une valeur que vous pouvez faire la même chose dans une fonction sur un clic ou sur un événement déclenché.
aussi vous pouvez obtenir une valeur en utilisant ViewChild
en utilisant une variable locale comme celle-ci
<input type='text' id='loginInput' #abc/>
et obtenir de la valeur comme ça
this.abc.nativeElement.value
okay got it, vous devez utiliser la méthode ngAfterViewInit
de angualr2 pour la même chose, comme ceci
ngAfterViewInit(){
document.getElementById('loginInput').value = '123344565';
}
ngAfterViewInit
ne générera aucune erreur car il sera rendu après le chargement du modèle
(<HTMLInputElement>document.getElementById('loginInput')).value = '123';
Angular ne peut pas prendre directement les éléments HTML, vous devez donc spécifier le type d’élément en y liant le générique ci-dessus.
Une approche différente, c'est-à-dire: vous pouvez simplement le faire 'à la Angular manière' et utiliser ngModel
et ignorer document.getElementById('loginInput').value = '123';
. Au lieu:
<input type="text" [(ngModel)]="username"/>
<input type="text" [(ngModel)]="password"/>
et dans votre composant, vous donnez ces valeurs:
username: 'whatever'
password: 'whatever'
cela prédéfinira le nom d'utilisateur et le mot de passe lors de la navigation vers la page.
Complate Angular Manière (Définir/Obtenir une valeur par ID):
// en balise HTML
<button (click) ="setValue()">Set Value</button>
<input type="text" #userNameId />
// Dans le fichier .ts du composant
export class testUserClass {
@ViewChild('userNameId') userNameId: ElementRef;
ngAfterViewInit(){
console.log(this.userNameId.nativeElement.value );
}
setValue(){
this.userNameId.nativeElement.value = "Sample user Name";
}
}