如何使用离子2
获得HTML元素值我的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>
我的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);
}
}
重复相同的日期值。我希望不重复相同的日期值。
因为我将检查两个变量。
所以我需要chat.date value.binded bended输入的值。但是我无法获得输入元素的值。
我遇到此错误
无法读取未定义的属性
的属性"本地元素"如何修复此问题或任何其他找到Slute的方法。
谢谢
我创建了一个plnkr链接:https://plnkr.co/edit/49tep8lb4lnjeksy3idq?p = preview
它对我有用,所以您可能想创建自己的plnkr,以便PPL可以帮助
export class ApiDemoApp{
root = ApiDemoPage;
@ViewChild('myname') input:ElementRef;
constructor() {
}
ngAfterViewInit() {
console.log(this.input.nativeElement.value);
}
}
使用此代码
@ViewChild('myname') input:any;
ngAfterViewInit() {
console.log(this.input.nativeElement.value) ;
}
如果您使用指令尝试这样的方式:
private el: HTMLInputElement;
constructor(private _elementRef: ElementRef) {
this.el = this._elementRef.nativeElement;
}
ngOnInit(): void {
console.log(this.el.value);
}
您的 input
元素取决于 *ngIf
condion。
<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>
</div>
ngIf
直接操纵DOM。如果值是错误的,则您的HTML元素以及外部Div容器将从DOM中删除。在这里检查这就是为什么您的ViewChild
不确定的原因。您需要检查组件中的相同条件,或重新考虑要访问组件中元素的逻辑。尝试以下操作:
ngAfterContentInit() {
console.log(this.input.nativeElement.value);
}
如果有人感兴趣如何检查本机元素是否内部有空数据,请使用textContent
属性。
假设我们有以下来自nativeElement.outerHTML
的HTML输出:
<div _ngcontent-c8="" checkifelementempty="" class="some-class">
<div _ngcontent-c8="">
<b><i> a</i></b>
</div>
</div>
检查上述HTML是否有空文本使用以下方式: !nativeElement.textContent.trim()
使用ngmodel。
根据您的代码,我对使用ngmodal进行了很小的更改。看到这个。
import { Component,Inject,ViewChild,ElementRef,AfterViewInit} from '@angular/core';
export class ChatPage implements AfterViewInit {
myname: string;
constructor(public modalCtrl: ModalController,public navCtrl: NavController) {}
ngAfterViewInit() {
console.log(this.myname);
}
}
<input [(ngModel)]="myname" type="hidden" value="John Doe">