2017-11-13 1 views
0

Ich habe eine Komponente Angular meine Kopf- und Fußzeilen aller meiner Form wie folgt enthält:Benutzerdefinierte Methode einreichen in Form Komponentenbehälter

<div class="layout vertical"> 
    <header class="layout horizontal center"> 
    <h2> {{enterData?.title}} </h2> 
    </header> 

    <!-- Form --> 
    <form [formGroup]="formName" #form="ngForm" (ngSubmit)="submit()" 
     class="layout vertical"> 
    <ng-content></ng-content> 

    </form> 

    <footer class="layout space-between horizontal">  
    <div class="buttons-footer-layout"> 
     <!-- buttons --> 
     <paper-button class="btn-cancel-alt" type="reset" (click)="close()" id="cancelInc">{{labels.BTN_ANNULER}} 
     </paper-button> 
     <paper-button class="btn-action" 
        [disabled]="!formName.valid || formName.pristine 
        (click)="submit()" 
        id="saveInc"> 
     {{labels.BTN_CREER}} 
     </paper-button> 
    </div> 
    </footer> 
</div> 

und der TS-Datei:

@Component({ 
     selector: 'enter-data-container', 
     templateUrl: './enter-data-container.component.html', 
     styleUrls: ['./enter-data-container.component.scss'] 
    }) 
    export class EnterDataContainerComponent { 
    @Input() enterData: EnterData<any>; 
    @Input() formName: FormGroup; 

    constructor(private store: Store<AppState>, 
        private location: Location) { 
     } 
    /** 
     * On submit du form 
     */ 
     submit() { 
    // Send Data to service 

    } 
    /** 
     * on click cancel 
     */ 
     close(): void {  
      this.location.back();  
     } 
    } 

In vielen Form Ich habe in meiner App die Submit immer gleich, aber manchmal ist es etwas anders. So möchte ich die Möglichkeit geben, die Submit-Funktion zu überschreiben, wenn es benötigt wird. Wie erreiche ich das mit Angular 2/4?

Antwort

0

Verwenden $ Event.preventDefault()

<paper-button class="btn-cancel-alt" type="reset" (click)="close(); $event.preventDefault()" id="cancelInc">{{labels.BTN_ANNULER}} 
     </paper-button> 
+0

das ist nicht mein Problem ist, möchte ich Funktion in der Komponente außer Kraft zu setzen einreichen, wenn nötig. – Tumeco

+0

Ich denke, Sie verwenden mehrere Formulare in derselben HTML-Seite mit einer Komponente mit der gleichen Schaltfläche zum Senden und möchten die Übermittlungsschaltfläche überschreiben. Ist das richtig? –

+0

ja es ist richtig, ich habe eine Lösung mit Abhängigkeitsinjektion gefunden. Ich rufe Submit-Funktion eines SubmitService in app.module.ts und wenn ich SubmitService überschreiben muss tun ich in der übergeordneten Komponente: bieten: [{bereitstellen: SubmitService, useClass: MyNewSubmitService}] – Tumeco