2016-07-16 21 views
13

Mục tiêu cuối cùng của tôi là làm cho phần tử văn bản tự động lấy nét khi tạo. Tôi vừa nghĩ ra một giải pháp để gọi e.target.focus() về sự kiện onload. Một cái gì đó như:Sự kiện onload 2 góc cho phần tử DOM gốc

<textarea rows="8" col="60" (load)='handleLoad($event)'> 

và sau đó:

handleLoad(e){ 
    e.target.focus(); 
} 

Vấn đề là góc không nhận load sự kiện.

PS: Tôi đã thử autofocus một lần nhưng có vẻ như không hoạt động.

+0

không có sự kiện như vậy cho văn bản, nhưng bạn có thể sử dụng tải của ng-include nếu cùng tồn tại trong angular2 – YOU

+0

Tôi đang tìm kiếm điều tương tự nhưng không có may mắn. –

Trả lời

18

Bạn sẽ có thể làm điều đó trong ngAfterViewInit móc:

import { ViewChild, ElementRef, AfterViewInit } from '@angular/core' 

// ... 

export class Component implements AfterViewInit { 

    @ViewChild('textarea') textarea: ElementRef 

    ngAfterViewInit() { 
    this.textarea.nativeElement.focus() 
    } 
} 

đâu trong mẫu bạn cần phải thiết lập mẫu biến:

<textarea #textarea rows="8" col="60"></textarea> 
+0

Nó hoạt động hoàn hảo. Cảm ơn. –

+0

Móc mà bạn thực sự nên sử dụng, nếu bạn định đi theo tuyến này, là 'ngAfterViewInit()'. 'ngOnInit()' được gọi sau khi lớp được khởi tạo, nhưng không đảm bảo rằng khung nhìn sẽ được hiển thị (và do đó, có thể không có 'nativeElement' để tập trung). 'ngAfterViewInit()' được gọi sau khi DOM được trả về. Xem [Tài liệu móc vòng đời của Angular] (https://angular.io/docs/ts/latest/guide/lifecycle-hooks.html). – jessepinho

+1

@jessepinho Bạn nói đúng, tôi đã lên kế hoạch để chỉnh sửa câu hỏi quá sau khi tôi hoàn thành với sandwitch. Cảm ơn bạn! – dfsq

10

Hãy thử the HTML5 autofocus attribute:

<textarea rows="8" col="60" autofocus> 

Luôn tốt hơn (và đơn giản hơn rất nhiều!) để sử dụng API DOM gốc nếu có thể hơn để thực hiện nó trong JavaScript :)

+0

Tôi cũng sẽ nói rằng nó nên được thực hiện như thế này. Tuy nhiên, vấn đề là nó không hoạt động trong hầu hết các trường hợp. – dfsq

+0

@dfsq Ý của bạn là "trong hầu hết các trường hợp"? [Hình như] (http://caniuse.com/#search=autofocus) nó được hỗ trợ khá tốt. – jessepinho

+0

Ý tôi là, nó hoạt động tốt khi HTML được hiển thị khi tải trang. Nó không hoạt động đáng tin cậy khi HTML được hiển thị không đồng bộ, như thường trong SAP. Kiểm tra thử nghiệm này tôi đã thực hiện: http://plnkr.co/edit/rpNKQRYJh3DuPafaVzqz?p=preview – dfsq

Các vấn đề liên quan