<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'ทำงาน?! อาจมีพฤติกรรมพิเศษกับรูปแบบและการผูกมัด