2016-11-03 7 views
1

Ich muss den Wert eines Eingangs ändern, wenn die Seite geladen wird. Aber ich kann es nicht. So habe ich die Eingabe in einer separaten HTML-Datei erstellt.Angular 2 kann den Eingangswert bei ngOnInit() nicht ändern

<form (submit)="some_function()"> 
<input (keypress)="some_function()" name="test" id="test-input" [(ngModel)]="test" [placeholder]="'NEED TO CHANGE INPUT TEXT' | translate"/> 
<button type="submit">Submit </button> 

Dann in einer ts-Datei habe ich so etwas wie dieses:

ngOnInit() { 

    var element = document.getElementById("test-input"); 
    // If I console.log(element) I actually get it. 

    element.textContent = "INPUT TEXT CHANGED??"; 
    // If I console.log(element.textContent) I get the input with changed text... but I can't see it otherwise 

} 

Was mache ich falsch hier? Irgendeine Hilfe?

+1

Sie können den Eingabewert in 'ngOnInit' ändern, wenn Sie 'ngModel' mit Eingabe verwendet haben : this.test = "neuer Wert" – ranakrunal9

Antwort

2

@Input-Variablen werden erst dann an einen Controller übergeben, wenn die Ansicht vollständig initialisiert ist (das ist ein anderer Hook von ngOnInit). Zuerst importieren Sie die richtigen Haken:

import { AfterViewInit } from "@angular/core"; 

dann erklären, dass Sie die AfterViewInit Haken setzen:

class YourController implements AfterViewInit 

und schließlich die Methode mit dem Haken im Zusammenhang erklären:

ngAfterViewInit() { 
    var element = document.getElementById("test-input"); 
    // If I console.log(element) I actually get it. 

    element.textContent = "INPUT TEXT CHANGED??"; 
    // If I console.log(element.textContent) I get the input with changed text... but I can't see it otherwise 
} 

tun sollten Der Trick (:

Verwandte Themen