2017-01-11 11 views
21

mam kod:Get elementu przez ID - Angular2

document.getElementById('loginInput').value = '123'; 

Ale podczas kompilacji kodu otrzymuję następujący błąd:

Property value does not exist on type HTMLElement.

Mam ogłoszony var: value: string;.

Jak mogę uniknąć tego błędu?

Dziękuję.

+0

Wygląda na to, że chcesz uzyskać komponent o id, a nie element po id. To nie jest jednak obsługiwane. –

+1

Podaj som więcej kodu –

+0

@ GünterZöchbauer Jak mogę złapać ten element? ''? – Natalia

Odpowiedz

22

jeśli chcesz ustawić wartość, niż możesz zrobić to samo w przypadku niektórych funkcji po kliknięciu lub po jakimś wydarzeniu.

również można uzyskać wartość za pomocą ViewChild użyciu zmiennej lokalnej jak ten

<input type='text' id='loginInput' #abc/> 

i uzyskać wartość tak

this.abc.nativeElement.value 

here is working example

Aktualizacja

porządku got it, trzeba użyć ngAfterViewInit metodę angualr2 za samo jak ten

ngAfterViewInit(){ 
    document.getElementById('loginInput').value = '123344565'; 
    } 

ngAfterViewInit will not throw any error because it will render after template loading

4

innego podejścia, czyli: Można po prostu zrób to „kątowej drogę” i używać ngModel i pominąć document.getElementById('loginInput').value = '123'; całkowicie. Zamiast:

<input type="text" [(ngModel)]="username"/> 
<input type="text" [(ngModel)]="password"/> 

aw komponentu podać następujące wartości:

username: 'whatever' 
password: 'whatever' 

zostanie zaprogramowane nazwy użytkownika i hasła momencie przechodząc do strony.

+0

Co zrobić, jeśli muszę przekazać wartość z zewnętrznego pliku javascript do pola formularza składowej kątowej? – DavidB

6
(<HTMLInputElement>document.getElementById('loginInput')).value = '123'; 

Kątowy nie może bezpośrednio przyjmować elementów HTML, ponieważ należy określić typ elementu, wiążąc z nim powyższy typ.

Powiązane problemy