Implement submit directive of form based on parent component



.everyoneloves__top-leaderboard:empty,.everyoneloves__mid-leaderboard:empty,.everyoneloves__bot-mid-leaderboard:empty height:90px;width:728px;box-sizing:border-box;








0















Hello i am trying to understand how can you create reusable forms in Typescript .What i understood so far is that you can create a Form Component , write its HTML file where you use the model fields.You leave the .ts file untouched.



Then you come with the component that needs the form and you embed the selector inside the parent component's HTML file:



Form Component



@Component(
selector: 'app-user-form',
templateUrl: './user-form.component.html',
styleUrls: ['./user-form.component.sass']
)
export class UserFormComponent implements OnInit
public Submit(empform:NgForm):void //can i make this abstract...or somehow make it available from the parent component to implement?
console.log(empform);

constructor()

ngOnInit()




<form #userForm="ngForm" (ngSubmit)="Submit(userForm)">
<div class="form-group">
<label>Id</label>
<input id="id" [(ngModel)]="id" type="text" class="form-control" name="jid">
</div>
<button type="submit" class="btn btn-primary">Save</button>
<//form>


So now what i understand is that if you declare a variable inside the parent Component with the fields named as in the form you have successfully binded them.



Parent Component



 export class CreateComponent implements OnInit 

public id:number; // this parent variable is bound to the field of the form


submit(empForm:NgForm):void //override or something depending on the parent
console.log(empForm);



<div id="childForm">
<app-user-form></app-user-form>
</div>


What i am curious is if how can i make the form to expose a method for the parent ,and the parent to implement it? I want to make the form dumb and the parent to decide how to respond to the submit.










share|improve this question

















  • 1





    Use top level form to wrap your child component so that you can access your submit method from parent Component

    – Chellappan
    Dec 4 '18 at 18:16

















0















Hello i am trying to understand how can you create reusable forms in Typescript .What i understood so far is that you can create a Form Component , write its HTML file where you use the model fields.You leave the .ts file untouched.



Then you come with the component that needs the form and you embed the selector inside the parent component's HTML file:



Form Component



@Component(
selector: 'app-user-form',
templateUrl: './user-form.component.html',
styleUrls: ['./user-form.component.sass']
)
export class UserFormComponent implements OnInit
public Submit(empform:NgForm):void //can i make this abstract...or somehow make it available from the parent component to implement?
console.log(empform);

constructor()

ngOnInit()




<form #userForm="ngForm" (ngSubmit)="Submit(userForm)">
<div class="form-group">
<label>Id</label>
<input id="id" [(ngModel)]="id" type="text" class="form-control" name="jid">
</div>
<button type="submit" class="btn btn-primary">Save</button>
<//form>


So now what i understand is that if you declare a variable inside the parent Component with the fields named as in the form you have successfully binded them.



Parent Component



 export class CreateComponent implements OnInit 

public id:number; // this parent variable is bound to the field of the form


submit(empForm:NgForm):void //override or something depending on the parent
console.log(empForm);



<div id="childForm">
<app-user-form></app-user-form>
</div>


What i am curious is if how can i make the form to expose a method for the parent ,and the parent to implement it? I want to make the form dumb and the parent to decide how to respond to the submit.










share|improve this question

















  • 1





    Use top level form to wrap your child component so that you can access your submit method from parent Component

    – Chellappan
    Dec 4 '18 at 18:16













0












0








0








Hello i am trying to understand how can you create reusable forms in Typescript .What i understood so far is that you can create a Form Component , write its HTML file where you use the model fields.You leave the .ts file untouched.



Then you come with the component that needs the form and you embed the selector inside the parent component's HTML file:



Form Component



@Component(
selector: 'app-user-form',
templateUrl: './user-form.component.html',
styleUrls: ['./user-form.component.sass']
)
export class UserFormComponent implements OnInit
public Submit(empform:NgForm):void //can i make this abstract...or somehow make it available from the parent component to implement?
console.log(empform);

constructor()

ngOnInit()




<form #userForm="ngForm" (ngSubmit)="Submit(userForm)">
<div class="form-group">
<label>Id</label>
<input id="id" [(ngModel)]="id" type="text" class="form-control" name="jid">
</div>
<button type="submit" class="btn btn-primary">Save</button>
<//form>


So now what i understand is that if you declare a variable inside the parent Component with the fields named as in the form you have successfully binded them.



Parent Component



 export class CreateComponent implements OnInit 

public id:number; // this parent variable is bound to the field of the form


submit(empForm:NgForm):void //override or something depending on the parent
console.log(empForm);



<div id="childForm">
<app-user-form></app-user-form>
</div>


What i am curious is if how can i make the form to expose a method for the parent ,and the parent to implement it? I want to make the form dumb and the parent to decide how to respond to the submit.










share|improve this question














Hello i am trying to understand how can you create reusable forms in Typescript .What i understood so far is that you can create a Form Component , write its HTML file where you use the model fields.You leave the .ts file untouched.



Then you come with the component that needs the form and you embed the selector inside the parent component's HTML file:



Form Component



@Component(
selector: 'app-user-form',
templateUrl: './user-form.component.html',
styleUrls: ['./user-form.component.sass']
)
export class UserFormComponent implements OnInit
public Submit(empform:NgForm):void //can i make this abstract...or somehow make it available from the parent component to implement?
console.log(empform);

constructor()

ngOnInit()




<form #userForm="ngForm" (ngSubmit)="Submit(userForm)">
<div class="form-group">
<label>Id</label>
<input id="id" [(ngModel)]="id" type="text" class="form-control" name="jid">
</div>
<button type="submit" class="btn btn-primary">Save</button>
<//form>


So now what i understand is that if you declare a variable inside the parent Component with the fields named as in the form you have successfully binded them.



Parent Component



 export class CreateComponent implements OnInit 

public id:number; // this parent variable is bound to the field of the form


submit(empForm:NgForm):void //override or something depending on the parent
console.log(empForm);



<div id="childForm">
<app-user-form></app-user-form>
</div>


What i am curious is if how can i make the form to expose a method for the parent ,and the parent to implement it? I want to make the form dumb and the parent to decide how to respond to the submit.







typescript angular2-forms code-reuse






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Nov 16 '18 at 12:37









Bercovici AdrianBercovici Adrian

1,51911122




1,51911122







  • 1





    Use top level form to wrap your child component so that you can access your submit method from parent Component

    – Chellappan
    Dec 4 '18 at 18:16












  • 1





    Use top level form to wrap your child component so that you can access your submit method from parent Component

    – Chellappan
    Dec 4 '18 at 18:16







1




1





Use top level form to wrap your child component so that you can access your submit method from parent Component

– Chellappan
Dec 4 '18 at 18:16





Use top level form to wrap your child component so that you can access your submit method from parent Component

– Chellappan
Dec 4 '18 at 18:16












0






active

oldest

votes












Your Answer






StackExchange.ifUsing("editor", function ()
StackExchange.using("externalEditor", function ()
StackExchange.using("snippets", function ()
StackExchange.snippets.init();
);
);
, "code-snippets");

StackExchange.ready(function()
var channelOptions =
tags: "".split(" "),
id: "1"
;
initTagRenderer("".split(" "), "".split(" "), channelOptions);

StackExchange.using("externalEditor", function()
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled)
StackExchange.using("snippets", function()
createEditor();
);

else
createEditor();

);

function createEditor()
StackExchange.prepareEditor(
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: true,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: 10,
bindNavPrevention: true,
postfix: "",
imageUploader:
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
,
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
);



);













draft saved

draft discarded


















StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53338060%2fimplement-submit-directive-of-form-based-on-parent-component%23new-answer', 'question_page');

);

Post as a guest















Required, but never shown

























0






active

oldest

votes








0






active

oldest

votes









active

oldest

votes






active

oldest

votes















draft saved

draft discarded
















































Thanks for contributing an answer to Stack Overflow!


  • Please be sure to answer the question. Provide details and share your research!

But avoid


  • Asking for help, clarification, or responding to other answers.

  • Making statements based on opinion; back them up with references or personal experience.

To learn more, see our tips on writing great answers.




draft saved


draft discarded














StackExchange.ready(
function ()
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53338060%2fimplement-submit-directive-of-form-based-on-parent-component%23new-answer', 'question_page');

);

Post as a guest















Required, but never shown





















































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown

































Required, but never shown














Required, but never shown












Required, but never shown







Required, but never shown







Popular posts from this blog

Top Tejano songwriter Luis Silva dead of heart attack at 64

ReactJS Fetched API data displays live - need Data displayed static

政党