<div>
<input #ipt type="text"/>
</div>
เป็นไปได้ไหมที่จะเข้าถึงตัวแปรการเข้าถึงเทมเพลตจากคลาสคอมโพเนนต์
กล่าวคือฉันสามารถเข้าถึงได้ที่นี่
class XComponent{
somefunction(){
//Can I access #ipt here?
}
}
<div>
<input #ipt type="text"/>
</div>
เป็นไปได้ไหมที่จะเข้าถึงตัวแปรการเข้าถึงเทมเพลตจากคลาสคอมโพเนนต์
กล่าวคือฉันสามารถเข้าถึงได้ที่นี่
class XComponent{
somefunction(){
//Can I access #ipt here?
}
}
คำตอบ:
นั่นเป็นกรณีการใช้งานสำหรับ@ViewChild
:
https://angular.io/docs/ts/latest/api/core/index/ViewChild-decorator.html
class XComponent {
@ViewChild('ipt', { static: true }) input: ElementRef;
ngAfterViewInit() {
// this.input is NOW valid !!
}
somefunction() {
this.input.nativeElement......
}
}
นี่คือการสาธิตที่ใช้งานได้:
https://stackblitz.com/edit/angular-viewchilddemo?file=src%2Fapp%2Fapp.component.ts
ngAfterViewInit()
ถูกไล่ออก คุณต้องนำเข้าViewChild
จาก '@ angular / core` ..
this.ipt.nativeElement.setAttribute('value', 'xxx');
แล้วแต่ไม่มีอะไรเกิดขึ้น และไม่มีวิธีการใดเช่นvalue()
หรือsetValue()
แม้ว่าฉันจะประกาศว่าเป็นประเภท HTMLInputElement ก็ตาม (ฉันใช้สิ่งนี้ตามคำใบ้ / เติมข้อความอัตโนมัติของ IDE) ในกรณีของฉันฉันไม่สนใจเกี่ยวกับการอ่านค่า ฉันแค่ต้องตั้งค่าต่างๆ
setProperty
ด้วยหรือไม่?
this.input.nativeElement.value = 'test'
ทำงาน?! อาจมีพฤติกรรมพิเศษกับรูปแบบและการผูกมัด