Angular 7 - Dynamic Forms and passing a function through
Using Angular's Dynamic forms I'm building a new input field
form.ts
usernameCallback(body) {
console.log(`hello ${body}`);
this.usernameService.post(body)
.subscribe(
data => {
console.log(data);
},
error => {
console.warn(`Error: ${error}`);
}
);
}
ngOnInit() {
new InputField({
key: 'username',
label: 'Username',
value: '',
placeholder: 'Enter username',
required: true,
callback: this.usernameCallback
}),
}
So this is the basics of the code.
I have inside UsernameService a method post()
which sends an http post request.
usernameCallback()
is added to the InputField and has the type of Function
to it.
Within input.component.ts where the form is built I am doing
callback() {
console.log(this.field.callback);
this.field.callback('cheddar');
}
The console log prints out the content from usernameCallback
which is fine but I get an error
ERROR TypeError: Cannot read property 'post' of undefined
It looks like it isn't able to process the usernameService but I cannot figure out why.
angular angular7
add a comment |
Using Angular's Dynamic forms I'm building a new input field
form.ts
usernameCallback(body) {
console.log(`hello ${body}`);
this.usernameService.post(body)
.subscribe(
data => {
console.log(data);
},
error => {
console.warn(`Error: ${error}`);
}
);
}
ngOnInit() {
new InputField({
key: 'username',
label: 'Username',
value: '',
placeholder: 'Enter username',
required: true,
callback: this.usernameCallback
}),
}
So this is the basics of the code.
I have inside UsernameService a method post()
which sends an http post request.
usernameCallback()
is added to the InputField and has the type of Function
to it.
Within input.component.ts where the form is built I am doing
callback() {
console.log(this.field.callback);
this.field.callback('cheddar');
}
The console log prints out the content from usernameCallback
which is fine but I get an error
ERROR TypeError: Cannot read property 'post' of undefined
It looks like it isn't able to process the usernameService but I cannot figure out why.
angular angular7
1
this.usernameCallback.bind(this)
should do the trick
– yurzui
Nov 22 at 18:01
Alternatively you can use instance arrow function likeusernameCallback = (body) => {
More on this you can find everywhere:) github.com/Microsoft/TypeScript/wiki/%27this%27-in-TypeScript
– yurzui
Nov 22 at 18:03
Where shouldthis.usernameCallback.bind(this)
be places @yurzui
– ngDough
Nov 22 at 18:07
callback: this.usernameCallback.bind(this)
– yurzui
Nov 22 at 18:18
Possible duplicate of How to access the correct `this` inside a callback?
– ConnorsFan
Nov 22 at 18:49
add a comment |
Using Angular's Dynamic forms I'm building a new input field
form.ts
usernameCallback(body) {
console.log(`hello ${body}`);
this.usernameService.post(body)
.subscribe(
data => {
console.log(data);
},
error => {
console.warn(`Error: ${error}`);
}
);
}
ngOnInit() {
new InputField({
key: 'username',
label: 'Username',
value: '',
placeholder: 'Enter username',
required: true,
callback: this.usernameCallback
}),
}
So this is the basics of the code.
I have inside UsernameService a method post()
which sends an http post request.
usernameCallback()
is added to the InputField and has the type of Function
to it.
Within input.component.ts where the form is built I am doing
callback() {
console.log(this.field.callback);
this.field.callback('cheddar');
}
The console log prints out the content from usernameCallback
which is fine but I get an error
ERROR TypeError: Cannot read property 'post' of undefined
It looks like it isn't able to process the usernameService but I cannot figure out why.
angular angular7
Using Angular's Dynamic forms I'm building a new input field
form.ts
usernameCallback(body) {
console.log(`hello ${body}`);
this.usernameService.post(body)
.subscribe(
data => {
console.log(data);
},
error => {
console.warn(`Error: ${error}`);
}
);
}
ngOnInit() {
new InputField({
key: 'username',
label: 'Username',
value: '',
placeholder: 'Enter username',
required: true,
callback: this.usernameCallback
}),
}
So this is the basics of the code.
I have inside UsernameService a method post()
which sends an http post request.
usernameCallback()
is added to the InputField and has the type of Function
to it.
Within input.component.ts where the form is built I am doing
callback() {
console.log(this.field.callback);
this.field.callback('cheddar');
}
The console log prints out the content from usernameCallback
which is fine but I get an error
ERROR TypeError: Cannot read property 'post' of undefined
It looks like it isn't able to process the usernameService but I cannot figure out why.
angular angular7
angular angular7
edited Nov 29 at 17:03
Goncalo Peres
1,3261318
1,3261318
asked Nov 22 at 18:00
ngDough
607
607
1
this.usernameCallback.bind(this)
should do the trick
– yurzui
Nov 22 at 18:01
Alternatively you can use instance arrow function likeusernameCallback = (body) => {
More on this you can find everywhere:) github.com/Microsoft/TypeScript/wiki/%27this%27-in-TypeScript
– yurzui
Nov 22 at 18:03
Where shouldthis.usernameCallback.bind(this)
be places @yurzui
– ngDough
Nov 22 at 18:07
callback: this.usernameCallback.bind(this)
– yurzui
Nov 22 at 18:18
Possible duplicate of How to access the correct `this` inside a callback?
– ConnorsFan
Nov 22 at 18:49
add a comment |
1
this.usernameCallback.bind(this)
should do the trick
– yurzui
Nov 22 at 18:01
Alternatively you can use instance arrow function likeusernameCallback = (body) => {
More on this you can find everywhere:) github.com/Microsoft/TypeScript/wiki/%27this%27-in-TypeScript
– yurzui
Nov 22 at 18:03
Where shouldthis.usernameCallback.bind(this)
be places @yurzui
– ngDough
Nov 22 at 18:07
callback: this.usernameCallback.bind(this)
– yurzui
Nov 22 at 18:18
Possible duplicate of How to access the correct `this` inside a callback?
– ConnorsFan
Nov 22 at 18:49
1
1
this.usernameCallback.bind(this)
should do the trick– yurzui
Nov 22 at 18:01
this.usernameCallback.bind(this)
should do the trick– yurzui
Nov 22 at 18:01
Alternatively you can use instance arrow function like
usernameCallback = (body) => {
More on this you can find everywhere:) github.com/Microsoft/TypeScript/wiki/%27this%27-in-TypeScript– yurzui
Nov 22 at 18:03
Alternatively you can use instance arrow function like
usernameCallback = (body) => {
More on this you can find everywhere:) github.com/Microsoft/TypeScript/wiki/%27this%27-in-TypeScript– yurzui
Nov 22 at 18:03
Where should
this.usernameCallback.bind(this)
be places @yurzui– ngDough
Nov 22 at 18:07
Where should
this.usernameCallback.bind(this)
be places @yurzui– ngDough
Nov 22 at 18:07
callback: this.usernameCallback.bind(this)
– yurzui
Nov 22 at 18:18
callback: this.usernameCallback.bind(this)
– yurzui
Nov 22 at 18:18
Possible duplicate of How to access the correct `this` inside a callback?
– ConnorsFan
Nov 22 at 18:49
Possible duplicate of How to access the correct `this` inside a callback?
– ConnorsFan
Nov 22 at 18:49
add a comment |
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
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53436198%2fangular-7-dynamic-forms-and-passing-a-function-through%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
active
oldest
votes
active
oldest
votes
active
oldest
votes
active
oldest
votes
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.
Some of your past answers have not been well-received, and you're in danger of being blocked from answering.
Please pay close attention to the following guidance:
- 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.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53436198%2fangular-7-dynamic-forms-and-passing-a-function-through%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
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
1
this.usernameCallback.bind(this)
should do the trick– yurzui
Nov 22 at 18:01
Alternatively you can use instance arrow function like
usernameCallback = (body) => {
More on this you can find everywhere:) github.com/Microsoft/TypeScript/wiki/%27this%27-in-TypeScript– yurzui
Nov 22 at 18:03
Where should
this.usernameCallback.bind(this)
be places @yurzui– ngDough
Nov 22 at 18:07
callback: this.usernameCallback.bind(this)
– yurzui
Nov 22 at 18:18
Possible duplicate of How to access the correct `this` inside a callback?
– ConnorsFan
Nov 22 at 18:49