File
    Implements
    
    
    Metadata
    
        
            
                | selector | 
                re-prompt | 
            
            
                | styleUrls | 
                dialog.scss | 
            
            
                | templateUrl | 
                ./prompt-dialog.component.html | 
            
        
    
    
    
    
    
    
        
        
        
        
        
        
        
        
            
                
                    | 
                        
                        
                            
                            defaultTemplate
                            
                            
                        
                     | 
                
                
                    
                        defaultTemplate:     TemplateRef<any>
                     | 
                
                    
                        
                            Type :     TemplateRef<any>
                         | 
                    
                    
                        
                            Decorators : ViewChild
                         | 
                    
                        
                            | 
                                    
                             | 
                        
            
        
        
            
                
                    | 
                        
                        
                            
                            dismiss
                            
                            
                        
                     | 
                
                
                    
                        dismiss:     EventEmitter<any>
                     | 
                
                    
                        
                            Type :     EventEmitter<any>
                         | 
                    
                        
                            | 
                                    
                             | 
                        
            
        
        
        
            
                
                    | 
                        
                        
                            
                            validators
                            
                            
                        
                     | 
                
                
                    
                        validators:     literal type
                     | 
                
                    
                        
                            Type :     literal type
                         | 
                    
                        
                            | 
                                    
                             | 
                        
            
        
 
    
        import { Component, EventEmitter, OnInit, TemplateRef, ViewChild, ChangeDetectorRef } from '@angular/core';
import { FormBuilder, FormGroup, ValidatorFn, AbstractControl } from '@angular/forms';
import { DialogOptions, PromptContent } from './dialog-options.model';
import { RebirthNGConfig } from '../rebirth-ng.config';
import { Modal } from '../modal/modal.model';
import { ModalDismissReasons } from '../modal/modal-dismiss-reasons.model';
@Component({
  selector: 're-prompt',
  templateUrl: './prompt-dialog.component.html',
  styleUrls: ['./dialog.scss']
})
export class PromptDialogComponent implements Modal, OnInit {
  context: DialogOptions;
  content: PromptContent;
  dismiss: EventEmitter<any>;
  btnYes: string;
  btnNo: string;
  btnYesType: string;
  btnNoType: string;
  form: FormGroup;
  validators: { [key: string]: { validator: ValidatorFn, message: string } };
  @ViewChild('defaultTemplate') defaultTemplate: TemplateRef<any>;
  constructor(private rebirthNGConfig: RebirthNGConfig,
              private formBuilder: FormBuilder,
              private changeDetectorRef: ChangeDetectorRef) {
    this.btnYes = rebirthNGConfig.dialog.button.yes;
    this.btnYesType = rebirthNGConfig.dialog.button.btnYesType;
    this.btnNo = rebirthNGConfig.dialog.button.no;
    this.btnNoType = rebirthNGConfig.dialog.button.btnNoType;
  }
  ngOnInit(): void {
    this.content = this.context.content as PromptContent;
    this.validators = this.content.validators || {};
    const validatorFns = Object.keys(this.validators).map((key) => this.validators[key].validator);
    this.form = this.formBuilder.group({
      promptValue: [this.content.defaultValue || '', validatorFns]
    });
    this.form.valueChanges.subscribe(() => {
      this.changeDetectorRef.markForCheck();
    });
  }
  getFieldErrors(control: AbstractControl) {
    if (control && control.errors) {
      const errors = Object.keys(control.errors).filter((key) => control.errors[key]);
      return errors.length > 0 ? [errors[0]] : [];
    }
  }
  yes() {
    this.dismiss.emit({ ...this.form.value, type: ModalDismissReasons.YES });
  }
  no() {
    this.dismiss.error(ModalDismissReasons.NO);
  }
}
     
    
        <div class="modal-header">
  <button type="button" class="close" data-dismiss="modal" aria-label="Close" (click)="no()">
    <span aria-hidden="true">×</span></button>
  <h4 class="modal-title">{{context.title}}</h4>
</div>
<div class="modal-body">
  <form [formGroup]="form" novalidate>
    <div class="form-group"
         [class.has-error]="form.controls['promptValue'].touched && form.controls['promptValue'].invalid">
      <label for="promptValue" class="control-label">{{content?.label}}</label>
      <ng-template [ngTemplateOutlet]="content.template || defaultTemplate"
                   [ngTemplateOutletContext]="{ $implicit: this, option: context, formGroup:form }"></ng-template>
      <ng-container *ngIf="form.controls['promptValue'].touched">
        <div class="help-block" *ngFor="let key of getFieldErrors(form.controls['promptValue'])">
          {{validators[key]?.message}}
        </div>
      </ng-container>
    </div>
  </form>
</div>
<div class="modal-footer">
  <button type="button" [disabled]="form.untouched || form.invalid" class="btn btn-{{btnYesType}}" (click)="yes()">
    {{context.yes ||btnYes}}
  </button>
  <button type="button" class="btn btn-{{btnNoType}}" (click)="no()">{{context.no || btnNo}}</button>
</div>
<ng-template #defaultTemplate let-option="option" let-formGroup="formGroup">
  <input type="text" class="form-control" id="promptValue" name="promptValue"
         [formControl]="formGroup.controls.promptValue"
         [placeholder]="option.content?.placeholder">
</ng-template>
     
    
        
        
            
                Legend
            
            
            
            
                Html element with directive