Saya mempunyai apl sudut hadapan dan saya ingin menetapkan fokus kepada kawasan teks tertentu dan meminta kursor berkelip dan bersedia untuk pengguna menaip dalam kawasan teks apabila ia dimuatkan.
Selepas melakukan googling, saya fikir @ViewChild mungkin pilihan yang tepat. Tetapi setakat ini saya dapat membuatnya berfungsi.
Ini adalah keseluruhan fail ts kendiri saya:
import { Component, ElementRef, ViewChild } from '@angular/core'; @Component({ selector: 'my-app', template: `Hello from {{name}}!
` }) export class App { @ViewChild('reference') textarea: ElementRef| undefined; name = 'Angular'; ngAfterViewInit(): void { this.textarea?.nativeElement.focus(); } }
Perkara pertama ialah lulus pilihan yang betul kepada
@ViewChild
:Jika tidak, anda akan mendapat contoh komponen dan bukannya nod dom.
Jika anda tidak mempunyai sebarang arahan struktur seperti *ngIf/*ngFor maka anda juga boleh lulus
{static: true, read: ElementRef}
,它将使elementRef在ngOnInit中可用
,否则你必须使用AfterViewInit
Saya rasa kod itu tidak berfungsi kerana nativeElement belum lagi berada dalam DOM. Kerja-kerja berikut (anda harus melihat dalam konsol (test1) bahawa nativeElement adalah batal pada permulaan ngAfterViewInit). Mungkin anda perlu menambah 1000ms:
}
Cara yang lebih menentukan untuk menunggu nativeElement muncul dalam DOM diterangkan di sini (daripada setTimeout):Biarkan fungsi menunggu elemen itu wujud