comment obtenir la valeur d'élément html en utilisant ionic 2
Ci-dessous mon code html
<div class="messagesholder" *ngFor="let chat of chatval | orderby:'[date]'" >
<div *ngIf="chat.sender == currentuser || chat.receiver == currentuser">
<div *ngIf="chat.date" style="text-align: center;" >
<p style="font-size:9px;" id="amount" #amount>{{chat.date | amDateFormat:'LL'}}</p>
<input #myname [ngModel]="range" (ngModelChange)="saverange($event)"/>
<input #myname type="text" value={{chat.date}}>
</div>
</div>
<div class="message" *ngIf="chat.sender == currentuser || chat.receiver == currentuser" [ngClass]="{'me': currentuser == chat.sender}">
<div class='image' *ngIf="chat.path" >
<img *ngIf="chat.path" [src]="chat.path"/><br>
<span *ngIf="chat.path_text">{{chat.path_text}}</span>
<span style="font-size:9px;">{{chat.date | amDateFormat:'hh:mmA'}}</span>
</div>
<div *ngIf="chat.message_text">
<span>{{chat.message_text}}</span>
<span style="font-size:9px;">{{chat.date | amDateFormat:'hh:mmA'}}</span>
</div>
</div>
Ci-dessous mon dossier ts
import { Component,Inject,ViewChild,ElementRef,AfterViewInit} from '@angular/core';
export class ChatPage implements AfterViewInit {
@ViewChild('myname') input:ElementRef;
constructor(public modalCtrl: ModalController,public navCtrl: NavController) {}
ngAfterViewInit() {
console.log(this.input.nativeElement.value);
}
}
Les mêmes valeurs de date sont répétées. Je souhaite que les mêmes valeurs de date ne soient pas répétées.
Parce que je vais vérifier deux variables.
donc j'ai besoin de chat.date value.because j'ai lié la valeur de input.
je reçois cette erreur
Impossible de lire la propriété 'nativeElement' de non définie
Comment résoudre ce problème ou tout autre moyen de trouver des solutions.
Merci
J'ai créé un lien plnkr: https://plnkr.co/edit/49TEP8lB4lNJEKsy3IDq?p=preview
Cela fonctionne pour moi, alors vous voudrez probablement créer votre propre système afin que ppl puisse vous aider
export class ApiDemoApp{
root = ApiDemoPage;
@ViewChild('myname') input:ElementRef;
constructor() {
}
ngAfterViewInit() {
console.log(this.input.nativeElement.value);
}
}
Utilisez ce code
@ViewChild('myname') input:any;
ngAfterViewInit() {
console.log(this.input.nativeElement.value) ;
}
Votre élément input
dépend de la condition *ngIf
.
<div *ngIf="chat.sender == currentuser || chat.receiver == currentuser">
<div *ngIf="chat.date" style="text-align: center;" >
<input #myname [ngModel]="range" (ngModelChange)="saverange($event)"/>
<input #myname type="text" value={{chat.date}}>
</div>
ngIf
manipule directement le DOM. Si la valeur est false, votre élément html et le conteneur div externe sont supprimés du DOM. Vérifiez ici C'est pourquoi votre ViewChild
n'est pas définie. Vous devrez vérifier les mêmes conditions dans votre composant ou reconsidérer la logique d'accès à l'élément dans votre composant .
ngAfterContentInit() {
console.log(this.input.nativeElement.value);
}
Si vous souhaitez savoir si nativeElement contient des données vides, utilisez la propriété textContent
.
Supposons que nous ayons la sortie HTML suivante de nativeElement.outerHTML
:
<div _ngcontent-c8="" checkifelementempty="" class="some-class">
<div _ngcontent-c8="">
<b><i> a</i></b>
</div>
</div>
Pour vérifier si le texte HTML ci-dessus est vide, utilisez ceci: !nativeElement.textContent.trim()