2017-12-08 21 views
0

동적 ID로 요소의 값을 가져 오거나 업데이트하려면 어떻게해야합니까?각도 2 동적 요소로 요소 가져 오기

<input type="text" class="form-control" id="{{'lat' + ind}}" formControlName="lat"> 

내가

this.someService.getData().subscribe(
        (response) => {this.data = response.json() 
           this.lon = this.data.x; 
           this.lat = this.data.y; 
           this.ind = this.data.ind; 
           // UPDATE MY 'lat+ind' and 'lon+ind' HERE 
        }, 
        (error) => console.log('ERROR: ' + error) 
     ); 
+0

당신은 document.querySelector ('# 위도'+ this.ind)'DOM 요소 – JasonK

+0

어떻게 값을 얻는 방법을 검색하는'사용할 수 있습니다 할 ChangeDetectorRef.detectChanges()를 사용할 수 있습니다 업데이트? –

답변

0

는 각도에 대한 더 나은 솔루션있을 수 있습니다 서버 responce 후 동적 입력을 업데이트해야하기 때문에 내가 ngAfterViewInit() {}를 사용할 수 있지만 querySelector을 사용할 수 있습니다.

다음은 예입니다 :

const input = <HTMLInputElement>document.querySelector('#lat' + this.ind); 

input.value = 'value'; // set value 

편집

형태의 각도와 함께 작동 방법을 이해하는 https://angular.io/guide/forms을 읽어 보시기 바랍니다.

+0

고마워,하지만 내 문제는 입력 값이 새 값이되었지만 form.data 객체 번호는 "주소"입니다. [{ "lat": 0, "lon": 0}, { "lat": 0, "lon": 0 }] –

+0

@ Serhiog.Lazin 최대한 멀리 볼 수있는 입력 값을 설정하지 않습니다. 당신은 ** id **를 설정하고 있습니다. 내 편집을 참조하십시오. – JasonK

+0

답변이 작동합니다. 새 값이 입력에 나타나지만 form.value 객체에는 표시되지 않았습니다. 그게 문제 야. –

0
this.someService.getData().subscribe(
    (response) => { 
        this.ngZone.run(function() { 
         this.data = response.json() 
         this.lon = this.data.x; 
         this.lat = this.data.y; 
         this.ind = this.data.ind; 
        };) 
        }, 
(error) => console.log('ERROR: ' + error) 
); 

참고 : NgZone을 가져 와서 생성자에 삽입해야합니다.

서비스에서 보낸 응답을받은 후에도보기가 업데이트되지 않으므로이 작업을 수행해야합니다. 위 코드를 사용하면보기가 다시 열리고 업데이트 된 값이 ID에 게시됩니다.

lat와 ind가 아직 정의되지 않은 경우 템플릿이 처음에 게시됩니다. 그런 다음 서비스 호출을하고 응답을 받으면 각도 값을 말해서 새로운 값으로보기를 업데이트해야합니다.

참고 : 당신은 또한이

+0

나는 동적 요소를 가진 입력 요소를 검색하려고한다고 생각합니다. – JasonK

+0

그는 입력 요소를 검색 할 필요가 없습니다. Angular는 입력 요소를 새로운 lat 및 ind 값으로 자동 업데이트합니다. –

+0

아, 아마도 문제를 잘못 해석했을 것입니다. 비록 '.run()'이 ** Angular zone에 다시 들어가기 위해 사용되었으므로 .run()이 변경되지는 않을 것이라고 생각하지만, .runOutsideAngular()를 전혀 사용하지 않습니다. – JasonK