바인딩 된 formControlName을 동적으로 변경하는 방법

사 비르 라만

4 formControl초와 하나의 입력 필드 만 있는 각도 2 반응 형이 있습니다. 내가 원하는 것은 사용자에게 정보를 하나씩 채워달라고 요청하는 것입니다. 그래서, 나는 할당있어 firstControlName속성 호출 currentFormControlNamengOnInit와 템플릿 파일 입력 필드와 바인딩. 사용자가 이름을 입력하면 필드가 유효하며 제출시 currentFormControlName속성을 다음 formControlName으로 변경합니다 . 그러나 문제는 바인딩이 업데이트되지 않는다는 것입니다. 입력 필드는 여전히에 결합되어 name있습니다. 입력 필드에 무언가를 입력하면의 값 name이 업데이트되지 않습니다 email.

app.component.ts

ngOnInit() {
  this.form = this.builder.group({
    'name': ['', Validator.required],
    'email': ['', Validator.email],
    'phone': ['', Validator.required],
    'password': ['', Validator.required],
  });
  this.currentFormControlName = 'name';
}

submit() {
  this.currentFormControlName = 'email'; // Setting it manually just for the demo of this question.
}

app.component.html

<form [formGroup]="form">
  <input type="text" [formControlName]="currentFormControlName">
  <input type="submit" (click)="submit()">
</form>
Yurzui

최신 정보

FormControlDirective컨트롤을 전환 하는 사용할 수도 있습니다.

[formControl]="form.get(currentFormControlName)"

이전 답변

다음이 있다고 가정 해 봅시다.

template.html

<form [formGroup]="form" #formDir="ngForm">
    <input type="text" #controlDir [formControlName]="currentFormControlName">
    <input type="submit" (click)="submit()">
</form>
<pre>{{ form.value | json }}</pre>

제출 버튼을 클릭하면 다음 currentFormControlName과 같은 새 이름으로 컨트롤을 변경 하고 등록 할 수 있습니다.

component.ts

form: FormGroup;

@ViewChild('formDir') formDir: FormGroupDirective;
@ViewChild('controlDir', { read: FormControlName }) controlDir: FormControlName;

currentFormControlName: string;

constructor(private builder: FormBuilder) {}

ngOnInit() {
    this.form = this.builder.group({
        'name': ['', Validators.required],
        'email': ['', Validators.email],
        'phone': ['', Validators.required],
        'password': ['', Validators.required],
    });
    this.currentFormControlName = 'name';
}

submit() {
    this.formDir.removeControl(this.controlDir);
    this.controlDir.name = this.currentFormControlName = 'email'
    this.formDir.addControl(this.controlDir);
}

그 후 입력 요소가 email가치 를 관리 합니다. 그래서 우리가 뭔가를 입력하면 가치에 input반영됩니다form.email

플 런커 예

이 솔루션은 FormControlName 소스 코드를 기반으로 합니다.

ngOnChanges(changes: SimpleChanges) {
  if (!this._added) this._setUpControl();
  if (isPropertyUpdated(changes, this.viewModel)) {
    this.viewModel = this.model;
    this.formDirective.updateModel(this, this.model);
  }
}

이 지시문이 한 번만 제어하는 ​​것을 볼 수 있습니다. 그러나 다음과 같은 ngOnDestroy 후크도 있습니다.

ngOnDestroy(): void {
  if (this.formDirective) {
    this.formDirective.removeControl(this);
  }
}

나에게 몇 가지 아이디어를 주었다

플 런커 예

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

동적으로 바인딩 된 XBL 바인딩을 해제하는 동적 방법

분류에서Dev

바인딩 된 데이터를 기반으로 항목을 동적으로 추가하는 방법

분류에서Dev

Aurelia에서 동적으로 바인딩 된 드롭 다운을 확인하는 방법은 무엇입니까?

분류에서Dev

SAS 세션 인코딩을 동적으로 변경하는 방법

분류에서Dev

라인 보간을 동적으로 변경하는 방법

분류에서Dev

동적으로 바인딩 된 openssh 역 터널을 위해 서버에 할당 된 포트를 확인하는 방법은 무엇입니까?

분류에서Dev

동적으로 바인딩 된 openssh 역 터널을 위해 서버에 할당 된 포트를 확인하는 방법은 무엇입니까?

분류에서Dev

Kivy 언어로 자동 바인딩 된 속성을 바인딩 해제하는 방법은 무엇입니까?

분류에서Dev

formControl 값을 동적으로 바인딩하는 방법은 무엇입니까?

분류에서Dev

바인딩 된 항목이 없을 수있는 Ninject로 동적 다중 주입을 지원하는 방법

분류에서Dev

동적으로 생성 된 필드에 Android에서 양방향 데이터 바인딩을 사용하는 방법

분류에서Dev

GUD 중단 점 키 바인딩을 이전 것으로 변경하는 방법

분류에서Dev

동적으로 생성 된 컨트롤을 reactui의 속성에 바인딩하는 가장 좋은 방법은 무엇입니까?

분류에서Dev

동적으로로드 된 부분보기를 부모 모델과 바인딩하는 방법

분류에서Dev

동적으로 생성 된 라벨에 바인딩 방법

분류에서Dev

HTML을 통해 PHP에서 제공된 동적 매개 변수로 jQuery Ajax 호출을 바인딩하는 방법

분류에서Dev

transform () pandas 적용시 변경된 값을 인식하는 방법

분류에서Dev

클릭 JavaScript로 동적으로 생성 된 div의 배경을 변경하는 방법은 무엇입니까?

분류에서Dev

매핑을 동적으로 바인딩하기 위해 guice 인젝터를 사용하는 방법

분류에서Dev

DataTable로 바인딩 된 DataGridView간에 행을 복사하는 방법

분류에서Dev

지연된 인스턴스화와 싱글 톤으로 바인딩을 등록하는 방법

분류에서Dev

ANSI로 인코딩 된 파일을 올바른 방법으로 읽는 방법은 무엇입니까?

분류에서Dev

ANSI로 인코딩 된 파일을 올바른 방법으로 읽는 방법은 무엇입니까?

분류에서Dev

repr을 인코딩 된 문자열로 변환하는 방법

분류에서Dev

Angular FormArray에서 ngSelect 드롭 다운을 동적으로 바인딩하는 방법

분류에서Dev

MVVM에서 동적으로 부풀린 레이아웃을 데이터 바인딩하는 방법

분류에서Dev

asp.net repeater 컨트롤을 데이터 소스에 동적으로 바인딩하는 방법

분류에서Dev

JqGrid에서 동적으로 행과 열을 바인딩하는 방법은 무엇입니까?

분류에서Dev

RajawaliVR을 사용하여 렌더링 된 이미지를 동적으로 변경하는 방법

Related 관련 기사

  1. 1

    동적으로 바인딩 된 XBL 바인딩을 해제하는 동적 방법

  2. 2

    바인딩 된 데이터를 기반으로 항목을 동적으로 추가하는 방법

  3. 3

    Aurelia에서 동적으로 바인딩 된 드롭 다운을 확인하는 방법은 무엇입니까?

  4. 4

    SAS 세션 인코딩을 동적으로 변경하는 방법

  5. 5

    라인 보간을 동적으로 변경하는 방법

  6. 6

    동적으로 바인딩 된 openssh 역 터널을 위해 서버에 할당 된 포트를 확인하는 방법은 무엇입니까?

  7. 7

    동적으로 바인딩 된 openssh 역 터널을 위해 서버에 할당 된 포트를 확인하는 방법은 무엇입니까?

  8. 8

    Kivy 언어로 자동 바인딩 된 속성을 바인딩 해제하는 방법은 무엇입니까?

  9. 9

    formControl 값을 동적으로 바인딩하는 방법은 무엇입니까?

  10. 10

    바인딩 된 항목이 없을 수있는 Ninject로 동적 다중 주입을 지원하는 방법

  11. 11

    동적으로 생성 된 필드에 Android에서 양방향 데이터 바인딩을 사용하는 방법

  12. 12

    GUD 중단 점 키 바인딩을 이전 것으로 변경하는 방법

  13. 13

    동적으로 생성 된 컨트롤을 reactui의 속성에 바인딩하는 가장 좋은 방법은 무엇입니까?

  14. 14

    동적으로로드 된 부분보기를 부모 모델과 바인딩하는 방법

  15. 15

    동적으로 생성 된 라벨에 바인딩 방법

  16. 16

    HTML을 통해 PHP에서 제공된 동적 매개 변수로 jQuery Ajax 호출을 바인딩하는 방법

  17. 17

    transform () pandas 적용시 변경된 값을 인식하는 방법

  18. 18

    클릭 JavaScript로 동적으로 생성 된 div의 배경을 변경하는 방법은 무엇입니까?

  19. 19

    매핑을 동적으로 바인딩하기 위해 guice 인젝터를 사용하는 방법

  20. 20

    DataTable로 바인딩 된 DataGridView간에 행을 복사하는 방법

  21. 21

    지연된 인스턴스화와 싱글 톤으로 바인딩을 등록하는 방법

  22. 22

    ANSI로 인코딩 된 파일을 올바른 방법으로 읽는 방법은 무엇입니까?

  23. 23

    ANSI로 인코딩 된 파일을 올바른 방법으로 읽는 방법은 무엇입니까?

  24. 24

    repr을 인코딩 된 문자열로 변환하는 방법

  25. 25

    Angular FormArray에서 ngSelect 드롭 다운을 동적으로 바인딩하는 방법

  26. 26

    MVVM에서 동적으로 부풀린 레이아웃을 데이터 바인딩하는 방법

  27. 27

    asp.net repeater 컨트롤을 데이터 소스에 동적으로 바인딩하는 방법

  28. 28

    JqGrid에서 동적으로 행과 열을 바인딩하는 방법은 무엇입니까?

  29. 29

    RajawaliVR을 사용하여 렌더링 된 이미지를 동적으로 변경하는 방법

뜨겁다태그

보관