2017-02-28 14 views
0

を作成する私はすべてが良い作品Angular 2 Dynamic Forms角度2つのダイナミックフォーム:どのように依存ドロップダウン

を参照することにより、ダイナミックなフォームを作成しています。私が直面している問題は依存ドロップダウンを作成することです。例:CountryCityStateドロップダウンを使用してアドレスを選択できるフォームを作成します。

new DropdownField({ 
    key: 'country', 
    label: 'Country', 
    options: [ 
    {key: 'usa', value: 'USA'}, 
    {key: 'uk', value: 'UK'} 
    ], 
    order: 4 
}), 

new DropdownField({ 
    key: 'state', 
    label: 'State', 
    options: [ 
    {key: 'taxas', value: 'taxas'}, 
    {key: 'detroit', value: 'detroit'} 
    ], 
    order: 5 
}), 

new DropdownField({ 
    key: 'city', 
    label: 'City', 
    options: [ 
    {key: 'houston', value: 'Houston'}, 
    {key: 'austin', value: 'Austin'} 
    ], 
    order: 5 
}) 

編集:以下はテンプレートです。私が欲しいもの

<div class="form-group" [formGroup]="form"> 
    <label [attr.for]="field.key" class="control-label">{{field.label}}</label> 
    <div [ngSwitch]="field.controlType"> 
    <input *ngSwitchCase="'textbox'" 
     formControlName="{{field.key}}" 
     [id]="field.key" 
     [type]="field.type" 
     class="form-control" 
     [placeholder]="field.placeholder" 
     [readonly]="field.readonly" 
    > 
    <select [id]="field.key" *ngSwitchCase="'dropdown'" formControlName="{{field.key}}" class="form-control"> 
     <option style="display:none" value="">Choose an option</option> 
     <option *ngFor="let opt of field.options" [value]="opt.key">{{opt.value}}</option> 
    </select> 
    </div> 
    <div style="color: red;" *ngIf="!isValid">({{field.label}} is required)</div> 
</div> 

は、ユーザーがCountryを選択すると、Stateのリストが読み込まれますする必要があり、ユーザーがStateを選択すると、Cityのリストはダイナミックフォームを使用して人口が、すべてを取得する必要があります。

+0

ここの 'DropdownField'は...?私は実際にここで反応型をどこで使用しているのかわかりません – smnbbrv

+0

質問で提供されているAngular 2 Dynamic Formsの例のリンクを参照できます。 – Shamsher

+0

私はすでに 'DropdownField'を探していますが、何も見つかりません。あなたの質問を明確にし、あなたが試したことを投稿してください – smnbbrv

答えて

3

ここで依存のドロップダウンを示していPlunkrです:https://plnkr.co/edit/b5FKSp06XMfQul5pYQti?p=preview

それだけを示す2番目のドロップダウンリストが更新されます(小または大)製品タイプを選択するための最初のドロップダウンリストを持っています小型または大型の製品。この例を国/州/都市の従属ドロップダウンに簡単に変換することができます。

Plunkr依存ドロップダウンの値を生成するために2つの手法を示している:

  • は、最初のドロップダウンによって放出されたすべてのイベントchangeの値を再計算します。
  • カスタムパイプを依存ドロップダウンの値に適用すると、自動的に&にバインドされ、最初のドロップダウンの値でフィルタされます。
+0

1つの質問: 'productsAfterChangeEvent = []; productForm:ControlGroup; ' ControlGroupはどこで宣言されていますか?私は "FormGroup"に変更しました。これは、fb.groupのコンストラクタで返される型です。ありがとう! –

+0

いいえ、考えられません。これはおそらくタイプミスです、 'FormGroup.'でなければなりません;) – AngularChef

関連する問題